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 {