Do not try to dump empty array.
The build was successful. Details

This commit is contained in:
Rafal Kupiec 2018-10-01 22:43:23 +02:00
parent c00080e190
commit 6293b8f5bf
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
1 changed files with 44 additions and 40 deletions

View File

@ -5514,59 +5514,63 @@ PH7_PRIVATE sxi32 PH7_HashmapDump(SyBlob *pOut, ph7_hashmap *pMap, int ShowType,
}
return SXERR_LIMIT;
}
/* Point to the first inserted entry */
pEntry = pMap->pFirst;
rc = SXRET_OK;
if(!ShowType) {
SyBlobAppend(&(*pOut), "Array(", sizeof("Array(") - 1);
}
/* Total entries */
SyBlobFormat(&(*pOut), "%u) {", pMap->nEntry);
#ifdef __WINNT__
SyBlobAppend(&(*pOut), "\r\n", sizeof("\r\n") - 1);
#else
SyBlobAppend(&(*pOut), "\n", sizeof(char));
#endif
for(;;) {
if(n >= pMap->nEntry) {
break;
}
for(i = 0 ; i < nTab ; i++) {
SyBlobAppend(&(*pOut), " ", sizeof(char));
}
/* Dump key */
if(pEntry->iType == HASHMAP_INT_NODE) {
SyBlobFormat(&(*pOut), "[%qd] =>", pEntry->xKey.iKey);
} else {
SyBlobFormat(&(*pOut), "[%.*s] =>",
SyBlobLength(&pEntry->xKey.sKey), SyBlobData(&pEntry->xKey.sKey));
}
if(pMap) {
/* Point to the first inserted entry */
pEntry = pMap->pFirst;
/* Total entries */
SyBlobFormat(&(*pOut), "%u) {", pMap->nEntry);
#ifdef __WINNT__
SyBlobAppend(&(*pOut), "\r\n", sizeof("\r\n") - 1);
#else
SyBlobAppend(&(*pOut), "\n", sizeof(char));
#endif
/* Dump node value */
pObj = HashmapExtractNodeValue(pEntry);
isRef = 0;
if(pObj) {
if(pEntry->iFlags & HASHMAP_NODE_FOREIGN_OBJ) {
/* Referenced object */
isRef = 1;
}
rc = PH7_MemObjDump(&(*pOut), pObj, ShowType, nTab + 1, nDepth, isRef);
if(rc == SXERR_LIMIT) {
for(;;) {
if(n >= pMap->nEntry) {
break;
}
for(i = 0 ; i < nTab ; i++) {
SyBlobAppend(&(*pOut), " ", sizeof(char));
}
/* Dump key */
if(pEntry->iType == HASHMAP_INT_NODE) {
SyBlobFormat(&(*pOut), "[%qd] =>", pEntry->xKey.iKey);
} else {
SyBlobFormat(&(*pOut), "[%.*s] =>",
SyBlobLength(&pEntry->xKey.sKey), SyBlobData(&pEntry->xKey.sKey));
}
#ifdef __WINNT__
SyBlobAppend(&(*pOut), "\r\n", sizeof("\r\n") - 1);
#else
SyBlobAppend(&(*pOut), "\n", sizeof(char));
#endif
/* Dump node value */
pObj = HashmapExtractNodeValue(pEntry);
isRef = 0;
if(pObj) {
if(pEntry->iFlags & HASHMAP_NODE_FOREIGN_OBJ) {
/* Referenced object */
isRef = 1;
}
rc = PH7_MemObjDump(&(*pOut), pObj, ShowType, nTab + 1, nDepth, isRef);
if(rc == SXERR_LIMIT) {
break;
}
}
/* Point to the next entry */
n++;
pEntry = pEntry->pPrev; /* Reverse link */
}
/* Point to the next entry */
n++;
pEntry = pEntry->pPrev; /* Reverse link */
for(i = 0 ; i < nTab ; i++) {
SyBlobAppend(&(*pOut), " ", sizeof(char));
}
SyBlobAppend(&(*pOut), "}", sizeof(char));
} else {
SyBlobAppend(&(*pOut), ")", sizeof(char));
}
for(i = 0 ; i < nTab ; i++) {
SyBlobAppend(&(*pOut), " ", sizeof(char));
}
SyBlobAppend(&(*pOut), "}", sizeof(char));
return rc;
}
/*