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