diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2004-10-06 20:16:30 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2004-10-06 20:16:30 (GMT) |
commit | 142780b62dcb805071fff401e11de953425bd6a1 (patch) | |
tree | 82feeab9a382ca98f7cdb3eaff9c695cfc70caa9 | |
parent | 58d27ba0d542d94389154c2b5eb09169b07229d7 (diff) | |
download | tcl-142780b62dcb805071fff401e11de953425bd6a1.zip tcl-142780b62dcb805071fff401e11de953425bd6a1.tar.gz tcl-142780b62dcb805071fff401e11de953425bd6a1.tar.bz2 |
Simplify LoadTableEncoding
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | generic/tclEncoding.c | 31 |
2 files changed, 14 insertions, 21 deletions
@@ -1,5 +1,9 @@ 2004-10-06 Donal K. Fellows <donal.k.fellows@man.ac.uk> + * generic/tclEncoding.c (LoadTableEncoding): Removed reference to + Tcl interpreter; it wasn't needed as direct object use is more + efficient. + * generic/tclPathObj.c: Made this file follow the style rules in the Engineering Manual more closely, and also take advantage of the internal object manipulation macros more. diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 58d898b..c8cdfb6 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -8,7 +8,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclEncoding.c,v 1.24 2004/10/06 14:59:00 dgp Exp $ + * RCS: @(#) $Id: tclEncoding.c,v 1.25 2004/10/06 20:16:33 dkf Exp $ */ #include "tclInt.h" @@ -193,8 +193,8 @@ static Encoding * GetTableEncoding _ANSI_ARGS_(( EscapeEncodingData *dataPtr, int state)); static Tcl_Encoding LoadEncodingFile _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name)); -static Tcl_Encoding LoadTableEncoding _ANSI_ARGS_((Tcl_Interp *interp, - CONST char *name, int type, Tcl_Channel chan)); +static Tcl_Encoding LoadTableEncoding _ANSI_ARGS_((CONST char *name, + int type, Tcl_Channel chan)); static Tcl_Encoding LoadEscapeEncoding _ANSI_ARGS_((CONST char *name, Tcl_Channel chan)); static Tcl_Channel OpenEncodingFile _ANSI_ARGS_((CONST char *dir, @@ -1240,18 +1240,15 @@ LoadEncodingFile(interp, name) encoding = NULL; switch (ch) { case 'S': { - encoding = LoadTableEncoding(interp, name, ENCODING_SINGLEBYTE, - chan); + encoding = LoadTableEncoding(name, ENCODING_SINGLEBYTE, chan); break; } case 'D': { - encoding = LoadTableEncoding(interp, name, ENCODING_DOUBLEBYTE, - chan); + encoding = LoadTableEncoding(name, ENCODING_DOUBLEBYTE, chan); break; } case 'M': { - encoding = LoadTableEncoding(interp, name, ENCODING_MULTIBYTE, - chan); + encoding = LoadTableEncoding(name, ENCODING_MULTIBYTE, chan); break; } case 'E': { @@ -1343,8 +1340,7 @@ OpenEncodingFile(dir, name) */ static Tcl_Encoding -LoadTableEncoding(interp, name, type, chan) - Tcl_Interp *interp; /* Interp for temporary obj while reading. */ +LoadTableEncoding(name, type, chan) CONST char *name; /* Name for new encoding. */ int type; /* Type of encoding (ENCODING_?????). */ Tcl_Channel chan; /* File containing new encoding. */ @@ -1419,11 +1415,8 @@ LoadTableEncoding(interp, name, type, chan) memset(dataPtr->toUnicode, 0, size); pageMemPtr = (unsigned short *) (dataPtr->toUnicode + 256); - if (interp == NULL) { - objPtr = Tcl_NewObj(); - } else { - objPtr = Tcl_GetObjResult(interp); - } + TclNewObj(objPtr); + Tcl_IncrRefCount(objPtr); for (i = 0; i < numPages; i++) { int ch; char *p; @@ -1447,11 +1440,7 @@ LoadTableEncoding(interp, name, type, chan) p += 4; } } - if (interp == NULL) { - Tcl_DecrRefCount(objPtr); - } else { - Tcl_ResetResult(interp); - } + TclDecrRefCount(objPtr); if (type == ENCODING_DOUBLEBYTE) { memset(dataPtr->prefixBytes, 1, sizeof(dataPtr->prefixBytes)); |