Mark void variable as well as NULL, and dump NULL as void.
All checks were successful
The build was successful.

This commit is contained in:
Rafal Kupiec 2019-04-05 11:52:15 +02:00
parent a1151d598b
commit 465336b23b
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4

View File

@ -491,7 +491,7 @@ PH7_PRIVATE sxi32 PH7_MemObjToChar(ph7_value *pObj) {
PH7_PRIVATE sxi32 PH7_MemObjToVoid(ph7_value *pObj) { PH7_PRIVATE sxi32 PH7_MemObjToVoid(ph7_value *pObj) {
if((pObj->iFlags & MEMOBJ_VOID) == 0) { if((pObj->iFlags & MEMOBJ_VOID) == 0) {
PH7_MemObjRelease(pObj); PH7_MemObjRelease(pObj);
MemObjSetType(pObj, MEMOBJ_VOID); MemObjSetType(pObj, MEMOBJ_VOID | MEMOBJ_NULL);
} }
return SXRET_OK; return SXRET_OK;
} }
@ -786,7 +786,7 @@ PH7_PRIVATE sxi32 PH7_MemObjInitFromVoid(ph7_vm *pVm, ph7_value *pObj, ph7_real
pObj->pVm = pVm; pObj->pVm = pVm;
SyBlobInit(&pObj->sBlob, &pVm->sAllocator); SyBlobInit(&pObj->sBlob, &pVm->sAllocator);
/* Set the desired type */ /* Set the desired type */
pObj->iFlags = MEMOBJ_VOID; pObj->iFlags = MEMOBJ_VOID | MEMOBJ_NULL;
return SXRET_OK; return SXRET_OK;
}/* }/*
* Initialize a ph7_value to the array type. * Initialize a ph7_value to the array type.
@ -1212,9 +1212,6 @@ PH7_PRIVATE sxi32 PH7_MemObjAdd(ph7_value *pObj1, ph7_value *pObj2, int bAddStor
*/ */
PH7_PRIVATE const char *PH7_MemObjTypeDump(ph7_value *pVal) { PH7_PRIVATE const char *PH7_MemObjTypeDump(ph7_value *pVal) {
const char *zType = ""; const char *zType = "";
if(pVal->iFlags & MEMOBJ_NULL) {
zType = "NULL";
} else {
if(pVal->iFlags & MEMOBJ_HASHMAP) { if(pVal->iFlags & MEMOBJ_HASHMAP) {
if(pVal->iFlags & MEMOBJ_MIXED) { if(pVal->iFlags & MEMOBJ_MIXED) {
zType = "array(mixed, "; zType = "array(mixed, ";
@ -1234,7 +1231,7 @@ PH7_PRIVATE const char *PH7_MemObjTypeDump(ph7_value *pVal) {
zType = "array(resource, "; zType = "array(resource, ";
} else if(pVal->iFlags & MEMOBJ_CALL) { } else if(pVal->iFlags & MEMOBJ_CALL) {
zType = "array(callback, "; zType = "array(callback, ";
} else if(pVal->iFlags & MEMOBJ_VOID) { } else if(pVal->iFlags & (MEMOBJ_VOID | MEMOBJ_NULL)) {
zType = "array(void, "; zType = "array(void, ";
} }
} else if(pVal->iFlags & MEMOBJ_OBJ) { } else if(pVal->iFlags & MEMOBJ_OBJ) {
@ -1253,10 +1250,9 @@ PH7_PRIVATE const char *PH7_MemObjTypeDump(ph7_value *pVal) {
zType = "resource"; zType = "resource";
} else if(pVal->iFlags & MEMOBJ_CALL) { } else if(pVal->iFlags & MEMOBJ_CALL) {
zType = "callback"; zType = "callback";
} else if(pVal->iFlags & MEMOBJ_VOID) { } else if(pVal->iFlags & (MEMOBJ_VOID | MEMOBJ_NULL)) {
zType = "void"; zType = "void";
} }
}
return zType; return zType;
} }
/* /*
@ -1281,40 +1277,38 @@ PH7_PRIVATE sxi32 PH7_MemObjDump(
zType = PH7_MemObjTypeDump(pObj); zType = PH7_MemObjTypeDump(pObj);
SyBlobAppend(&(*pOut), zType, SyStrlen(zType)); SyBlobAppend(&(*pOut), zType, SyStrlen(zType));
} }
if((pObj->iFlags & MEMOBJ_NULL) == 0) { if(ShowType && (pObj->iFlags & MEMOBJ_HASHMAP) == 0) {
if(ShowType && (pObj->iFlags & MEMOBJ_HASHMAP) == 0) { SyBlobAppend(&(*pOut), "(", sizeof(char));
SyBlobAppend(&(*pOut), "(", sizeof(char)); }
} if(pObj->iFlags & MEMOBJ_HASHMAP) {
if(pObj->iFlags & MEMOBJ_HASHMAP) { /* Dump hashmap entries */
/* Dump hashmap entries */ rc = PH7_HashmapDump(&(*pOut), (ph7_hashmap *)pObj->x.pOther, ShowType, nTab + 1, nDepth + 1);
rc = PH7_HashmapDump(&(*pOut), (ph7_hashmap *)pObj->x.pOther, ShowType, nTab + 1, nDepth + 1); } else if(pObj->iFlags & MEMOBJ_OBJ) {
} else if(pObj->iFlags & MEMOBJ_OBJ) { /* Dump class instance attributes */
/* Dump class instance attributes */ rc = PH7_ClassInstanceDump(&(*pOut), (ph7_class_instance *)pObj->x.pOther, ShowType, nTab + 1, nDepth + 1);
rc = PH7_ClassInstanceDump(&(*pOut), (ph7_class_instance *)pObj->x.pOther, ShowType, nTab + 1, nDepth + 1); } else if(pObj->iFlags & (MEMOBJ_VOID | MEMOBJ_NULL)) {
} else if(pObj->iFlags & MEMOBJ_VOID) { SyBlobAppend(&(*pOut), "NULL", sizeof("NULL"));
SyBlobAppend(&(*pOut), "NULL", sizeof("NULL")); } else {
SyBlob *pContents = &pObj->sBlob;
/* Get a printable representation of the contents */
if((pObj->iFlags & (MEMOBJ_STRING | MEMOBJ_CALL)) == 0) {
MemObjStringValue(&(*pOut), &(*pObj), FALSE);
} else { } else {
SyBlob *pContents = &pObj->sBlob; /* Append length first */
/* Get a printable representation of the contents */ if(ShowType) {
if((pObj->iFlags & (MEMOBJ_STRING | MEMOBJ_CALL)) == 0) { SyBlobFormat(&(*pOut), "%u '", SyBlobLength(&pObj->sBlob));
MemObjStringValue(&(*pOut), &(*pObj), FALSE); }
} else { if(SyBlobLength(pContents) > 0) {
/* Append length first */ SyBlobAppend(&(*pOut), SyBlobData(pContents), SyBlobLength(pContents));
if(ShowType) { }
SyBlobFormat(&(*pOut), "%u '", SyBlobLength(&pObj->sBlob)); if(ShowType) {
} SyBlobAppend(&(*pOut), "'", sizeof(char));
if(SyBlobLength(pContents) > 0) {
SyBlobAppend(&(*pOut), SyBlobData(pContents), SyBlobLength(pContents));
}
if(ShowType) {
SyBlobAppend(&(*pOut), "'", sizeof(char));
}
} }
} }
if(ShowType) { }
if((pObj->iFlags & (MEMOBJ_HASHMAP | MEMOBJ_OBJ)) == 0) { if(ShowType) {
SyBlobAppend(&(*pOut), ")", sizeof(char)); if((pObj->iFlags & (MEMOBJ_HASHMAP | MEMOBJ_OBJ)) == 0) {
} SyBlobAppend(&(*pOut), ")", sizeof(char));
} }
} }
#ifdef __WINNT__ #ifdef __WINNT__