comparison os2/dw.c @ 1884:71780cf68aa2

More container and tree changes on all platforms regarding memory. This should fix GTK3 memory leaks I wasn't previously aware of... but it will cause all platforms to leak memory if strings returned from dw_container_query_start(), dw_container_query_next() and dw_tree_get_title() are not freed with dw_free() when using version 3.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Wed, 28 Aug 2013 23:47:40 +0000
parents 6949c73e30fd
children f7d408a47752
comparison
equal deleted inserted replaced
1883:0fecaedb83fa 1884:71780cf68aa2
9180 char * API dw_tree_get_title(HWND handle, HTREEITEM item) 9180 char * API dw_tree_get_title(HWND handle, HTREEITEM item)
9181 { 9181 {
9182 PCNRITEM pci = (PCNRITEM)item; 9182 PCNRITEM pci = (PCNRITEM)item;
9183 9183
9184 handle = handle; /* keep compiler happy */ 9184 handle = handle; /* keep compiler happy */
9185 if(pci) 9185 if(pci && pci->rc.pszIcon)
9186 return (char *)pci->rc.pszIcon; 9186 return strdup((char *)pci->rc.pszIcon);
9187 return NULL; 9187 return NULL;
9188 } 9188 }
9189 9189
9190 /* 9190 /*
9191 * Gets the text an item in a tree window (widget). 9191 * Gets the text an item in a tree window (widget).
10286 while(pCore) 10286 while(pCore)
10287 { 10287 {
10288 if(pCore->flRecordAttr & flags) 10288 if(pCore->flRecordAttr & flags)
10289 { 10289 {
10290 dw_window_set_data(handle, "_dw_pcore", (void *)pCore); 10290 dw_window_set_data(handle, "_dw_pcore", (void *)pCore);
10291 return flags & DW_CR_RETDATA ? (char *)pCore->pszText : (char *)pCore->pszIcon; 10291 if(flags & DW_CR_RETDATA)
10292 return (char *)pCore->pszText;
10293 return pCore->pszIcon ? strdup((char *)pCore->pszIcon) : NULL;
10292 } 10294 }
10293 pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); 10295 pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER));
10294 } 10296 }
10295 } 10297 }
10296 else 10298 else
10297 { 10299 {
10298 dw_window_set_data(handle, "_dw_pcore", (void *)pCore); 10300 dw_window_set_data(handle, "_dw_pcore", (void *)pCore);
10299 return flags & DW_CR_RETDATA ? (char *)pCore->pszText : (char *)pCore->pszIcon; 10301 if(flags & DW_CR_RETDATA)
10302 return (char *)pCore->pszText;
10303 return pCore->pszIcon ? strdup((char *)pCore->pszIcon) : NULL;
10300 } 10304 }
10301 } 10305 }
10302 return NULL; 10306 return NULL;
10303 } 10307 }
10304 10308
10323 while(pCore) 10327 while(pCore)
10324 { 10328 {
10325 if(pCore->flRecordAttr & flags) 10329 if(pCore->flRecordAttr & flags)
10326 { 10330 {
10327 dw_window_set_data(handle, "_dw_pcore", (void *)pCore); 10331 dw_window_set_data(handle, "_dw_pcore", (void *)pCore);
10328 return flags & DW_CR_RETDATA ? (char *)pCore->pszText : (char *)pCore->pszIcon; 10332 if(flags & DW_CR_RETDATA)
10333 return (char *)pCore->pszText;
10334 return pCore->pszIcon ? strdup((char *)pCore->pszIcon) : NULL;
10329 } 10335 }
10330 10336
10331 pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); 10337 pCore = WinSendMsg(handle, CM_QUERYRECORD, (MPARAM)pCore, MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER));
10332 } 10338 }
10333 } 10339 }
10334 else 10340 else
10335 { 10341 {
10336 dw_window_set_data(handle, "_dw_pcore", (void *)pCore); 10342 dw_window_set_data(handle, "_dw_pcore", (void *)pCore);
10337 return flags & DW_CR_RETDATA ? (char *)pCore->pszText : (char *)pCore->pszIcon; 10343 if(flags & DW_CR_RETDATA)
10344 return (char *)pCore->pszText;
10345 return pCore->pszIcon ? strdup((char *)pCore->pszIcon) : NULL;
10338 } 10346 }
10339 } 10347 }
10340 return NULL; 10348 return NULL;
10341 } 10349 }
10342 10350