summaryrefslogtreecommitdiffstats
path: root/generic/tclListObj.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2022-11-26 23:57:26 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2022-11-26 23:57:26 (GMT)
commit513b2d50314fa22ef6df699c698ee0f05b7f59b5 (patch)
treec4417e67a6e82b80abac34e9d224fa6a64357880 /generic/tclListObj.c
parentbfe8928bed8d82210b9a892f1ea0add32ac7ad59 (diff)
downloadtcl-513b2d50314fa22ef6df699c698ee0f05b7f59b5.zip
tcl-513b2d50314fa22ef6df699c698ee0f05b7f59b5.tar.gz
tcl-513b2d50314fa22ef6df699c698ee0f05b7f59b5.tar.bz2
HAS_ABSTRACTLIST_PROC
Diffstat (limited to 'generic/tclListObj.c')
-rw-r--r--generic/tclListObj.c23
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;
}
/*