summaryrefslogtreecommitdiffstats
path: root/generic/tclResult.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclResult.c')
-rw-r--r--generic/tclResult.c59
1 files changed, 15 insertions, 44 deletions
diff --git a/generic/tclResult.c b/generic/tclResult.c
index 57a6de5..9d0714c 100644
--- a/generic/tclResult.c
+++ b/generic/tclResult.c
@@ -27,9 +27,7 @@ enum returnKeys {
static Tcl_Obj ** GetKeys(void);
static void ReleaseKeys(ClientData clientData);
static void ResetObjResult(Interp *iPtr);
-#ifndef TCL_NO_DEPRECATED
static void SetupAppendBuffer(Interp *iPtr, int newSpace);
-#endif /* !TCL_NO_DEPRECATED */
/*
* This structure is used to take a snapshot of the interpreter state in
@@ -37,7 +35,7 @@ static void SetupAppendBuffer(Interp *iPtr, int newSpace);
* then back up to the result or the error that was previously in progress.
*/
-typedef struct {
+typedef struct InterpState {
int status; /* return code status */
int flags; /* Each remaining field saves the */
int returnLevel; /* corresponding field of the Interp */
@@ -232,7 +230,6 @@ Tcl_DiscardInterpState(
*----------------------------------------------------------------------
*/
-#ifndef TCL_NO_DEPRECATED
#undef Tcl_SaveResult
void
Tcl_SaveResult(
@@ -464,7 +461,6 @@ Tcl_SetResult(
ResetObjResult(iPtr);
}
-#endif /* !TCL_NO_DEPRECATED */
/*
*----------------------------------------------------------------------
@@ -487,21 +483,18 @@ const char *
Tcl_GetStringResult(
register Tcl_Interp *interp)/* Interpreter whose result to return. */
{
- Interp *iPtr = (Interp *) interp;
-#ifdef TCL_NO_DEPRECATED
- return Tcl_GetString(iPtr->objResultPtr);
-#else
/*
* If the string result is empty, move the object result to the string
* result, then reset the object result.
*/
+ Interp *iPtr = (Interp *) interp;
+
if (*(iPtr->result) == 0) {
Tcl_SetResult(interp, TclGetString(Tcl_GetObjResult(interp)),
TCL_VOLATILE);
}
return iPtr->result;
-#endif
}
/*
@@ -543,7 +536,6 @@ Tcl_SetObjResult(
TclDecrRefCount(oldObjResult);
-#ifndef TCL_NO_DEPRECATED
/*
* Reset the string result since we just set the result object.
*/
@@ -558,7 +550,6 @@ Tcl_SetObjResult(
}
iPtr->result = iPtr->resultSpace;
iPtr->resultSpace[0] = 0;
-#endif
}
/*
@@ -587,7 +578,6 @@ Tcl_GetObjResult(
Tcl_Interp *interp) /* Interpreter whose result to return. */
{
register Interp *iPtr = (Interp *) interp;
-#ifndef TCL_NO_DEPRECATED
Tcl_Obj *objResultPtr;
int length;
@@ -614,7 +604,6 @@ Tcl_GetObjResult(
iPtr->result = iPtr->resultSpace;
iPtr->result[0] = 0;
}
-#endif /* !TCL_NO_DEPRECATED */
return iPtr->objResultPtr;
}
@@ -733,21 +722,6 @@ Tcl_AppendElement(
* to result. */
{
Interp *iPtr = (Interp *) interp;
-#ifdef TCL_NO_DEPRECATED
- Tcl_Obj *elementPtr = Tcl_NewStringObj(element, -1);
- Tcl_Obj *listPtr = Tcl_NewListObj(1, &elementPtr);
- const char *bytes;
-
- if (Tcl_IsShared(iPtr->objResultPtr)) {
- Tcl_SetObjResult(interp, Tcl_DuplicateObj(iPtr->objResultPtr));
- }
- bytes = TclGetString(iPtr->objResultPtr);
- if (TclNeedSpace(bytes, bytes+iPtr->objResultPtr->length)) {
- Tcl_AppendToObj(iPtr->objResultPtr, " ", 1);
- }
- Tcl_AppendObjToObj(iPtr->objResultPtr, listPtr);
- Tcl_DecrRefCount(listPtr);
-#else
char *dst;
int size;
int flags;
@@ -791,7 +765,6 @@ Tcl_AppendElement(
flags |= TCL_DONT_QUOTE_HASH;
}
iPtr->appendUsed += Tcl_ConvertElement(element, dst, flags);
-#endif /* !TCL_NO_DEPRECATED */
}
/*
@@ -813,7 +786,6 @@ Tcl_AppendElement(
*----------------------------------------------------------------------
*/
-#ifndef TCL_NO_DEPRECATED
static void
SetupAppendBuffer(
Interp *iPtr, /* Interpreter whose result is being set up. */
@@ -874,7 +846,6 @@ SetupAppendBuffer(
Tcl_FreeResult((Tcl_Interp *) iPtr);
iPtr->result = iPtr->appendResult;
}
-#endif /* !TCL_NO_DEPRECATED */
/*
*----------------------------------------------------------------------
@@ -904,7 +875,6 @@ Tcl_FreeResult(
{
register Interp *iPtr = (Interp *) interp;
-#ifndef TCL_NO_DEPRECATED
if (iPtr->freeProc != NULL) {
if (iPtr->freeProc == TCL_DYNAMIC) {
ckfree(iPtr->result);
@@ -914,7 +884,6 @@ Tcl_FreeResult(
iPtr->freeProc = 0;
}
-#endif /* !TCL_NO_DEPRECATED */
ResetObjResult(iPtr);
}
@@ -944,7 +913,6 @@ Tcl_ResetResult(
register Interp *iPtr = (Interp *) interp;
ResetObjResult(iPtr);
-#ifndef TCL_NO_DEPRECATED
if (iPtr->freeProc != NULL) {
if (iPtr->freeProc == TCL_DYNAMIC) {
ckfree(iPtr->result);
@@ -955,7 +923,6 @@ Tcl_ResetResult(
}
iPtr->result = iPtr->resultSpace;
iPtr->resultSpace[0] = 0;
-#endif /* !TCL_NO_DEPRECATED */
if (iPtr->errorCode) {
/* Legacy support */
if (iPtr->flags & ERR_LEGACY_COPY) {
@@ -1015,11 +982,11 @@ ResetObjResult(
Tcl_IncrRefCount(objResultPtr);
iPtr->objResultPtr = objResultPtr;
} else {
- if (objResultPtr->bytes != &tclEmptyString) {
+ if (objResultPtr->bytes != tclEmptyStringRep) {
if (objResultPtr->bytes) {
ckfree(objResultPtr->bytes);
}
- objResultPtr->bytes = &tclEmptyString;
+ objResultPtr->bytes = tclEmptyStringRep;
objResultPtr->length = 0;
}
TclFreeIntRep(objResultPtr);
@@ -1309,8 +1276,10 @@ TclProcessReturn(
Tcl_DictObjGet(NULL, iPtr->returnOpts, keys[KEY_ERRORINFO],
&valuePtr);
if (valuePtr != NULL) {
- (void) TclGetString(valuePtr);
- if (valuePtr->length) {
+ int infoLen;
+
+ (void) TclGetStringFromObj(valuePtr, &infoLen);
+ if (infoLen) {
iPtr->errorInfo = valuePtr;
Tcl_IncrRefCount(iPtr->errorInfo);
iPtr->flags |= ERR_ALREADY_LOGGED;
@@ -1413,11 +1382,13 @@ TclMergeReturnOptions(
Tcl_Obj **keys = GetKeys();
for (; objc > 1; objv += 2, objc -= 2) {
- const char *opt = TclGetString(objv[0]);
- const char *compare = TclGetString(keys[KEY_OPTIONS]);
+ int optLen;
+ const char *opt = TclGetStringFromObj(objv[0], &optLen);
+ int compareLen;
+ const char *compare =
+ TclGetStringFromObj(keys[KEY_OPTIONS], &compareLen);
- if ((objv[0]->length == keys[KEY_OPTIONS]->length)
- && (memcmp(opt, compare, objv[0]->length) == 0)) {
+ if ((optLen == compareLen) && (memcmp(opt, compare, optLen) == 0)) {
Tcl_DictSearch search;
int done = 0;
Tcl_Obj *keyPtr;