changeset 1504:c6ab88dcf016

Allow dw_container_change/set_item() to accept NULL on OS/2.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 26 Dec 2011 21:52:33 +0000
parents 79c99c612725
children fcdd9e3c735a
files os2/dw.c
diffstat 1 files changed, 25 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/os2/dw.c	Mon Dec 26 21:40:35 2011 +0000
+++ b/os2/dw.c	Mon Dec 26 21:52:33 2011 +0000
@@ -8378,7 +8378,7 @@
    ULONG totalsize, size = 0, *flags = blah ? blah->data : 0;
    int z, currentcount;
    CNRINFO cnr;
-    void *dest;
+   void *dest;
 
    if(!flags)
       return;
@@ -8411,7 +8411,12 @@
    dest = (void *)(((ULONG)temp)+((ULONG)totalsize));
 
    if(flags[column] & DW_CFA_BITMAPORICON)
-      memcpy(dest, data, sizeof(HPOINTER));
+   {
+       if(data)
+           memcpy(dest, data, sizeof(HPOINTER));
+       else
+           memset(dest, 0, sizeof(HPOINTER));
+   }
    else if(flags[column] & DW_CFA_STRING)
    {
       char **newstr = (char **)data, **str = dest;
@@ -8425,11 +8430,26 @@
          *str = NULL;
    }
    else if(flags[column] & DW_CFA_ULONG)
-      memcpy(dest, data, sizeof(ULONG));
+   {
+       if(data)
+           memcpy(dest, data, sizeof(ULONG));
+       else
+           memset(dest, 0, sizeof(ULONG));
+   }
    else if(flags[column] & DW_CFA_DATE)
-      memcpy(dest, data, sizeof(CDATE));
+   {
+       if(data)
+           memcpy(dest, data, sizeof(CDATE));
+       else
+           memset(dest, 0, sizeof(CDATE));
+   }
    else if(flags[column] & DW_CFA_TIME)
-      memcpy(dest, data, sizeof(CTIME));
+   {
+       if(data)
+           memcpy(dest, data, sizeof(CTIME));
+       else
+           memset(dest, 0, sizeof(CTIME));
+   }
 }
 
 /* Internal function that free()s any strings allocated for a container item */