Mercurial > dwindows
comparison os2/dw.c @ 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 | f8b4d6075cac |
children | fbe9028af341 |
comparison
equal
deleted
inserted
replaced
1503:79c99c612725 | 1504:c6ab88dcf016 |
---|---|
8376 { | 8376 { |
8377 WindowData *blah = (WindowData *)WinQueryWindowPtr(handle, QWP_USER); | 8377 WindowData *blah = (WindowData *)WinQueryWindowPtr(handle, QWP_USER); |
8378 ULONG totalsize, size = 0, *flags = blah ? blah->data : 0; | 8378 ULONG totalsize, size = 0, *flags = blah ? blah->data : 0; |
8379 int z, currentcount; | 8379 int z, currentcount; |
8380 CNRINFO cnr; | 8380 CNRINFO cnr; |
8381 void *dest; | 8381 void *dest; |
8382 | 8382 |
8383 if(!flags) | 8383 if(!flags) |
8384 return; | 8384 return; |
8385 | 8385 |
8386 if(!_dw_send_msg(handle, CM_QUERYCNRINFO, (MPARAM)&cnr, MPFROMSHORT(sizeof(CNRINFO)), 0)) | 8386 if(!_dw_send_msg(handle, CM_QUERYCNRINFO, (MPARAM)&cnr, MPFROMSHORT(sizeof(CNRINFO)), 0)) |
8409 temp = temp->preccNextRecord; | 8409 temp = temp->preccNextRecord; |
8410 | 8410 |
8411 dest = (void *)(((ULONG)temp)+((ULONG)totalsize)); | 8411 dest = (void *)(((ULONG)temp)+((ULONG)totalsize)); |
8412 | 8412 |
8413 if(flags[column] & DW_CFA_BITMAPORICON) | 8413 if(flags[column] & DW_CFA_BITMAPORICON) |
8414 memcpy(dest, data, sizeof(HPOINTER)); | 8414 { |
8415 if(data) | |
8416 memcpy(dest, data, sizeof(HPOINTER)); | |
8417 else | |
8418 memset(dest, 0, sizeof(HPOINTER)); | |
8419 } | |
8415 else if(flags[column] & DW_CFA_STRING) | 8420 else if(flags[column] & DW_CFA_STRING) |
8416 { | 8421 { |
8417 char **newstr = (char **)data, **str = dest; | 8422 char **newstr = (char **)data, **str = dest; |
8418 | 8423 |
8419 if(*str) | 8424 if(*str) |
8423 *str = strdup(*newstr); | 8428 *str = strdup(*newstr); |
8424 else | 8429 else |
8425 *str = NULL; | 8430 *str = NULL; |
8426 } | 8431 } |
8427 else if(flags[column] & DW_CFA_ULONG) | 8432 else if(flags[column] & DW_CFA_ULONG) |
8428 memcpy(dest, data, sizeof(ULONG)); | 8433 { |
8434 if(data) | |
8435 memcpy(dest, data, sizeof(ULONG)); | |
8436 else | |
8437 memset(dest, 0, sizeof(ULONG)); | |
8438 } | |
8429 else if(flags[column] & DW_CFA_DATE) | 8439 else if(flags[column] & DW_CFA_DATE) |
8430 memcpy(dest, data, sizeof(CDATE)); | 8440 { |
8441 if(data) | |
8442 memcpy(dest, data, sizeof(CDATE)); | |
8443 else | |
8444 memset(dest, 0, sizeof(CDATE)); | |
8445 } | |
8431 else if(flags[column] & DW_CFA_TIME) | 8446 else if(flags[column] & DW_CFA_TIME) |
8432 memcpy(dest, data, sizeof(CTIME)); | 8447 { |
8448 if(data) | |
8449 memcpy(dest, data, sizeof(CTIME)); | |
8450 else | |
8451 memset(dest, 0, sizeof(CTIME)); | |
8452 } | |
8433 } | 8453 } |
8434 | 8454 |
8435 /* Internal function that free()s any strings allocated for a container item */ | 8455 /* Internal function that free()s any strings allocated for a container item */ |
8436 void _dw_container_free_strings(HWND handle, PRECORDCORE temp) | 8456 void _dw_container_free_strings(HWND handle, PRECORDCORE temp) |
8437 { | 8457 { |