Mercurial > dwindows
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 */