diff options
| author | dkf <donal.k.fellows@manchester.ac.uk> | 2020-02-25 15:07:51 (GMT) |
|---|---|---|
| committer | dkf <donal.k.fellows@manchester.ac.uk> | 2020-02-25 15:07:51 (GMT) |
| commit | 1eeefb073a3dec57e47e1b30b8df7467358857e7 (patch) | |
| tree | 710b9ce60996830d6aa84c191bc5f7926a79f418 /generic/tclOODefineCmds.c | |
| parent | f0ead2e3090a454ed612a59517b46fb47c794600 (diff) | |
| download | tcl-1eeefb073a3dec57e47e1b30b8df7467358857e7.zip tcl-1eeefb073a3dec57e47e1b30b8df7467358857e7.tar.gz tcl-1eeefb073a3dec57e47e1b30b8df7467358857e7.tar.bz2 | |
Ensure that we release the correct references when an error occurs during setting a class's superclasses
Diffstat (limited to 'generic/tclOODefineCmds.c')
| -rw-r--r-- | generic/tclOODefineCmds.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/generic/tclOODefineCmds.c b/generic/tclOODefineCmds.c index f02e1d3..2ace60c 100644 --- a/generic/tclOODefineCmds.c +++ b/generic/tclOODefineCmds.c @@ -2132,7 +2132,6 @@ ClassSuperSet( superclasses[i] = GetClassInOuterContext(interp, superv[i], "only a class can be a superclass"); if (superclasses[i] == NULL) { - i--; goto failedAfterAlloc; } for (j = 0; j < i; j++) { @@ -2149,7 +2148,7 @@ ClassSuperSet( "attempt to form circular dependency graph", -1)); Tcl_SetErrorCode(interp, "TCL", "OO", "CIRCULARITY", NULL); failedAfterAlloc: - for (; i > 0; i--) { + for (; i-- > 0 ;) { TclOODecrRefCount(superclasses[i]->thisPtr); } ckfree(superclasses); |
