diff options
author | pooryorick <com.digitalsmarties@pooryorick.com> | 2016-07-11 08:09:33 (GMT) |
---|---|---|
committer | pooryorick <com.digitalsmarties@pooryorick.com> | 2016-07-11 08:09:33 (GMT) |
commit | c2bfc705d7cf803d4244385effe1fb8596233c86 (patch) | |
tree | dcfef1de12e42d945e29bb24997aef7541ffd80b | |
parent | 60aac4bac55c5bd000122090794bee62b428db1c (diff) | |
download | tcl-c2bfc705d7cf803d4244385effe1fb8596233c86.zip tcl-c2bfc705d7cf803d4244385effe1fb8596233c86.tar.gz tcl-c2bfc705d7cf803d4244385effe1fb8596233c86.tar.bz2 |
Change TclIsEmpty to TclCheckEmptyString. Check length instead of first char of
bytes.
-rw-r--r-- | generic/tclExecute.c | 10 | ||||
-rw-r--r-- | generic/tclInt.h | 5 | ||||
-rw-r--r-- | generic/tclStringObj.c | 14 |
3 files changed, 14 insertions, 15 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index f8de5a7..d2ab1a1 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -5447,10 +5447,10 @@ TEBCresume( * for utf-8, strcmp can't do a simple memcmp. */ - if (TclIsEmpty(valuePtr) > 0) { + if (TclCheckEmptyString(valuePtr) > 0) { s1 = ""; s1len = 0; - switch (TclIsEmpty(value2Ptr)) { + switch (TclCheckEmptyString(value2Ptr)) { case -1: s2 = TclGetStringFromObj(value2Ptr, &s2len); break; @@ -5463,10 +5463,10 @@ TEBCresume( s2 = ""; s2len = 0; } - } else if (TclIsEmpty(value2Ptr) > 0) { + } else if (TclCheckEmptyString(value2Ptr) > 0) { s2 = ""; s2len = 0; - switch (TclIsEmpty(valuePtr)) { + switch (TclCheckEmptyString(valuePtr)) { case -1: s1 = TclGetStringFromObj(valuePtr, &s1len); break; @@ -6210,7 +6210,7 @@ TEBCresume( representation, whether one value is not a number. */ # define TclIsNotNumber(objPtr) ( \ - ( TclIsEmpty((objPtr)) > 0 \ + ( TclCheckEmptyString((objPtr)) > 0 \ || ( (objPtr)->bytes != NULL && \ TclParseNumber( \ interp, (objPtr), "number", NULL, -1, NULL, 0) != TCL_OK)) \ diff --git a/generic/tclInt.h b/generic/tclInt.h index 817f17d..6cf2308 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -3926,6 +3926,7 @@ MODULE_SCOPE int TclCompileStreqOpCmd(Tcl_Interp *interp, MODULE_SCOPE int TclCompileAssembleCmd(Tcl_Interp *interp, Tcl_Parse *parsePtr, Command *cmdPtr, struct CompileEnv *envPtr); +MODULE_SCOPE int TclCheckEmptyString(Tcl_Obj *objPtr); /* * Functions defined in generic/tclVar.c and currenttly exported only for use @@ -4412,10 +4413,10 @@ MODULE_SCOPE void TclDbInitNewObj(Tcl_Obj *objPtr, const char *file, (((objPtr)->typePtr==&tclByteArrayType) && ((objPtr)->bytes==NULL)) #define TclIsPureDict(objPtr) \ - (((objPtr)->typePtr==&tclDictType) && ((objPtr)->bytes==NULL)) + (((objPtr)->bytes==NULL) && ((objPtr)->typePtr==&tclDictType)) #define TclIsPureList(objPtr) \ - (((objPtr)->typePtr==&tclListType) && ((objPtr)->bytes==NULL)) + (((objPtr)->bytes==NULL) && ((objPtr)->typePtr==&tclListType)) /* *---------------------------------------------------------------- diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index de3a82e..a500cc3 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -446,7 +446,7 @@ Tcl_GetCharLength( /* *---------------------------------------------------------------------- * - * TclIsEmpty -- + * TclCheckEmptyString -- * * Determine whether the string value of an object is or would be the * empty string, without generating a string representation. @@ -460,13 +460,14 @@ Tcl_GetCharLength( *---------------------------------------------------------------------- */ int -TclIsEmpty ( +TclCheckEmptyString ( Tcl_Obj *objPtr ) { int length = -1; + enum result {EMPTY_UNKNOWN = -1, EMPTY_NO, EMPTY_YES}; if (objPtr->bytes == tclEmptyStringRep) { - return 1; + return EMPTY_YES; } if (TclIsPureList(objPtr)) { @@ -480,12 +481,9 @@ TclIsEmpty ( } if (objPtr->bytes == NULL) { - return -1; - } - if (objPtr->bytes[0] == '\0') { - return 1; + return EMPTY_UNKNOWN; } - return 0; + return objPtr->length == 0; } /* |