changeset 1501:7060e258e383

Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 26 Dec 2011 21:20:54 +0000
parents 97002721c4ca
children dc41efe8a53f
files gtk3/dw.c
diffstat 1 files changed, 32 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/gtk3/dw.c	Mon Dec 26 10:56:36 2011 +0000
+++ b/gtk3/dw.c	Mon Dec 26 21:20:54 2011 +0000
@@ -5776,7 +5776,7 @@
  */
 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data)
 {
-   char numbuf[21], textbuffer[101];
+   char numbuf[21], textbuffer[101] = {0};
    int flag = 0;
    GtkWidget *cont;
    GtkListStore *store = NULL;
@@ -5805,57 +5805,61 @@
          if(flag & DW_CFA_STRINGANDICON)
          {
             void **thisdata = (void **)data;
-            HICN hicon = *((HICN *)thisdata[0]);
-            char *tmp = (char *)thisdata[1];
-            GdkPixbuf *pixbuf = _find_pixbuf(hicon, NULL, NULL);
+            HICN hicon = data ? *((HICN *)thisdata[0]) : 0;
+            char *tmp = data ? (char *)thisdata[1] : NULL;
+            GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL;
 
             gtk_list_store_set(store, &iter, 1, pixbuf, -1);
             gtk_list_store_set(store, &iter, 2, tmp, -1);
          }
          else if(flag & DW_CFA_BITMAPORICON)
          {
-            HICN hicon = *((HICN *)data);
-            GdkPixbuf *pixbuf = _find_pixbuf(hicon, NULL, NULL);
+            HICN hicon = data ? *((HICN *)data) : 0;
+            GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL;
 
             gtk_list_store_set(store, &iter, column + 2, pixbuf, -1);
          }
          else if(flag & DW_CFA_STRING)
          {
-            char *tmp = *((char **)data);
+            char *tmp = data ? *((char **)data) : NULL;
             gtk_list_store_set(store, &iter, column + 2, tmp, -1);
          }
          else if(flag & DW_CFA_ULONG)
          {
-            ULONG tmp = *((ULONG *)data);
+            ULONG tmp = data ? *((ULONG *)data): 0;
 
             gtk_list_store_set(store, &iter, column + 2, tmp, -1);
          }
          else if(flag & DW_CFA_DATE)
          {
-            struct tm curtm;
-            CDATE cdate = *((CDATE *)data);
-
-            memset( &curtm, 0, sizeof(curtm) );
-            curtm.tm_mday = cdate.day;
-            curtm.tm_mon = cdate.month - 1;
-            curtm.tm_year = cdate.year - 1900;
-
-            strftime(textbuffer, 100, "%x", &curtm);
-
+            if(data)
+            {
+               struct tm curtm;
+               CDATE cdate = *((CDATE *)data);
+
+               memset( &curtm, 0, sizeof(curtm) );
+               curtm.tm_mday = cdate.day;
+               curtm.tm_mon = cdate.month - 1;
+               curtm.tm_year = cdate.year - 1900;
+
+               strftime(textbuffer, 100, "%x", &curtm);
+            }
             gtk_list_store_set(store, &iter, column + 2, textbuffer, -1);
          }
          else if(flag & DW_CFA_TIME)
          {
-            struct tm curtm;
-            CTIME ctime = *((CTIME *)data);
-
-            memset( &curtm, 0, sizeof(curtm) );
-            curtm.tm_hour = ctime.hours;
-            curtm.tm_min = ctime.minutes;
-            curtm.tm_sec = ctime.seconds;
-
-            strftime(textbuffer, 100, "%X", &curtm);
-
+            if(data)
+            {
+               struct tm curtm;
+               CTIME ctime = *((CTIME *)data);
+
+               memset( &curtm, 0, sizeof(curtm) );
+               curtm.tm_hour = ctime.hours;
+               curtm.tm_min = ctime.minutes;
+               curtm.tm_sec = ctime.seconds;
+
+               strftime(textbuffer, 100, "%X", &curtm);
+            }
             gtk_list_store_set(store, &iter, column + 2, textbuffer, -1);
          }
       }