}
}
+static VOID
+DirNodeCleanup(PDIRFINDLISTNODE ptrStartNode,
+ PDWORD pdwCount)
+{
+ PDIRFINDLISTNODE ptrNextNode;
+ PDIRFINDSTREAMNODE ptrFreeNode;
+ while (ptrStartNode)
+ {
+ ptrNextNode = ptrStartNode->ptrNext;
+ while (ptrStartNode->stInfo.ptrHead)
+ {
+ ptrFreeNode = ptrStartNode->stInfo.ptrHead;
+ ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
+ cmd_free(ptrFreeNode);
+ }
+ cmd_free(ptrStartNode);
+ ptrStartNode = ptrNextNode;
+ --(*pdwCount);
+ }
+}
+
/*
* DirList
*
ULARGE_INTEGER u64Temp; /* A temporary counter */
WIN32_FIND_STREAM_DATA wfsdStreamInfo;
PDIRFINDSTREAMNODE * ptrCurNode; /* The pointer to the first stream */
- PDIRFINDSTREAMNODE ptrFreeNode; /* The pointer used during cleanup */
static HANDLE (WINAPI *pFindFirstStreamW)(LPCWSTR, STREAM_INFO_LEVELS, LPVOID, DWORD);
static BOOL (WINAPI *pFindNextStreamW)(HANDLE, LPVOID);
if (ptrNextNode->ptrNext == NULL)
{
WARN("DEBUG: Cannot allocate memory for ptrNextNode->ptrNext!\n");
- while (ptrStartNode)
- {
- ptrNextNode = ptrStartNode->ptrNext;
- while (ptrStartNode->stInfo.ptrHead)
- {
- ptrFreeNode = ptrStartNode->stInfo.ptrHead;
- ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
- cmd_free(ptrFreeNode);
- }
- cmd_free(ptrStartNode);
- ptrStartNode = ptrNextNode;
- dwCount--;
- }
+ DirNodeCleanup(ptrStartNode, &dwCount);
FindClose(hSearch);
return 1;
}
if (*ptrCurNode == NULL)
{
WARN("DEBUG: Cannot allocate memory for *ptrCurNode!\n");
- while (ptrStartNode)
- {
- ptrNextNode = ptrStartNode->ptrNext;
- while (ptrStartNode->stInfo.ptrHead)
- {
- ptrFreeNode = ptrStartNode->stInfo.ptrHead;
- ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
- cmd_free(ptrFreeNode);
- }
- cmd_free(ptrStartNode);
- ptrStartNode = ptrNextNode;
- dwCount--;
- }
+ DirNodeCleanup(ptrStartNode, &dwCount);
FindClose(hStreams);
FindClose(hSearch);
return 1;
if (ptrFileArray == NULL)
{
WARN("DEBUG: Cannot allocate memory for ptrFileArray!\n");
- while (ptrStartNode)
- {
- ptrNextNode = ptrStartNode->ptrNext;
- while (ptrStartNode->stInfo.ptrHead)
- {
- ptrFreeNode = ptrStartNode->stInfo.ptrHead;
- ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
- cmd_free(ptrFreeNode);
- }
- cmd_free(ptrStartNode);
- ptrStartNode = ptrNextNode;
- dwCount --;
- }
+ DirNodeCleanup(ptrStartNode, &dwCount);
return 1;
}
/* Free array */
cmd_free(ptrFileArray);
+
/* Free linked list */
- while (ptrStartNode)
- {
- ptrNextNode = ptrStartNode->ptrNext;
- while (ptrStartNode->stInfo.ptrHead)
- {
- ptrFreeNode = ptrStartNode->stInfo.ptrHead;
- ptrStartNode->stInfo.ptrHead = ptrFreeNode->ptrNext;
- cmd_free(ptrFreeNode);
- }
- cmd_free(ptrStartNode);
- ptrStartNode = ptrNextNode;
- dwCount --;
- }
+ DirNodeCleanup(ptrStartNode, &dwCount);
if (CheckCtrlBreak(BREAK_INPUT))
return 1;