diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-11-26 23:57:26 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2022-11-26 23:57:26 (GMT) |
commit | 513b2d50314fa22ef6df699c698ee0f05b7f59b5 (patch) | |
tree | c4417e67a6e82b80abac34e9d224fa6a64357880 /generic/tclListObj.c | |
parent | bfe8928bed8d82210b9a892f1ea0add32ac7ad59 (diff) | |
download | tcl-513b2d50314fa22ef6df699c698ee0f05b7f59b5.zip tcl-513b2d50314fa22ef6df699c698ee0f05b7f59b5.tar.gz tcl-513b2d50314fa22ef6df699c698ee0f05b7f59b5.tar.bz2 |
HAS_ABSTRACTLIST_PROC
Diffstat (limited to 'generic/tclListObj.c')
-rw-r--r-- | generic/tclListObj.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/generic/tclListObj.c b/generic/tclListObj.c index 4a5b3ae..565872e 100644 --- a/generic/tclListObj.c +++ b/generic/tclListObj.c @@ -158,8 +158,9 @@ const TclObjTypeWithAbstractList tclListType = { DupListInternalRep, /* dupIntRepProc */ UpdateStringOfList, /* updateStringProc */ SetListFromAny, /* setFromAnyProc */ - TCL_OBJTYPE_V0_1}, - ListLength + TCL_OBJTYPE_V0_1( + ListLength + ) }; /* Macros to manipulate the List internal rep */ @@ -1994,19 +1995,17 @@ Tcl_ListObjLength( Tcl_Obj *listObj, /* List object whose #elements to return. */ Tcl_Size *lenPtr) /* The resulting int is stored here. */ { - if (listObj->typePtr && (listObj->typePtr->version == TCL_OBJTYPE_V0_1)) { + if (HAS_ABSTRACTLIST_PROC(listObj, lengthProc)) { const TclObjTypeWithAbstractList *objType = (const TclObjTypeWithAbstractList *)listObj->typePtr; - if (objType->lengthProc) { - unsigned long long len = objType->lengthProc(listObj); - if (len >= TCL_INDEX_NONE) { - if (interp) { - Tcl_AppendResult(interp, "List too large"); - } - return TCL_ERROR; + unsigned long long len = objType->lengthProc(listObj); + if (len >= TCL_INDEX_NONE) { + if (interp) { + Tcl_AppendResult(interp, "List too large"); } - *lenPtr = len; - return TCL_OK; + return TCL_ERROR; } + *lenPtr = len; + return TCL_OK; } /* |