Changes On Branch bug-75b8433707
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch bug-75b8433707 Excluding Merge-Ins

This is equivalent to a diff from 17150b71d2 to 23be32a082

2014-07-19
16:35
[75b8433707] Revised fix for memleak in oo instance list management. check-in: 98d8d28e03 user: dgp tags: trunk
2014-07-18
22:05
[75b8433707] Plug a subtle memory leak in TclOO. Test suite very unhappy with this. Shoving into... Closed-Leaf check-in: 23be32a082 user: dkf tags: bug-75b8433707
12:22
merge trunk check-in: e2f47cd58e user: dkf tags: dkf-http-cookies
12:18
[b43f2b49f7] New compilation strategy for lappend that allows multi-value lappend to not have quadra... check-in: 17150b71d2 user: dkf tags: trunk
2014-07-17
18:43
Finally, use correct octal notation which works in Tcl 9 as well. check-in: 838e8dcfd4 user: jan.nijtmans tags: trunk

Changes to generic/tclOO.c.
1276
1277
1278
1279
1280
1281
1282

1283
1284
1285
1286
1287
1288
1289
	    goto removeInstance;
	}
    }
    return;

  removeInstance:
    if (Deleted(clsPtr->thisPtr)) {

	clsPtr->instances.list[i] = NULL;
    } else {
	clsPtr->instances.num--;
	if (i < clsPtr->instances.num) {
	    clsPtr->instances.list[i] =
		    clsPtr->instances.list[clsPtr->instances.num];
	}







>







1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
	    goto removeInstance;
	}
    }
    return;

  removeInstance:
    if (Deleted(clsPtr->thisPtr)) {
	DelRef(clsPtr->instances.list[i]);
	clsPtr->instances.list[i] = NULL;
    } else {
	clsPtr->instances.num--;
	if (i < clsPtr->instances.num) {
	    clsPtr->instances.list[i] =
		    clsPtr->instances.list[clsPtr->instances.num];
	}
Changes to tests/oo.test.
254
255
256
257
258
259
260













261
262
263
264
265
266
267
} -body {
    oo::define B constructor {} {A create test-oo-1.18}
    B create C
} -cleanup {
    rename test-oo-1.18 {}
    A destroy
} -result ::C













test oo-1.19 {basic test of OO functionality: teardown order} -body {
    oo::object create o
    namespace delete [info object namespace o]
    o destroy
    # Crashes on error
} -returnCodes error -result {invalid command name "o"}
test oo-1.20 {basic test of OO functionality: my teardown post rename} -body {







>
>
>
>
>
>
>
>
>
>
>
>
>







254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
} -body {
    oo::define B constructor {} {A create test-oo-1.18}
    B create C
} -cleanup {
    rename test-oo-1.18 {}
    A destroy
} -result ::C
test oo-1.18.1 {Bug 75b8433707: memory leak in oo-1.18} -setup {
    proc test-oo-1.18 {} return
} -constraints memory -body {
    leaktest {
	oo::class create A
	oo::class create B {superclass A}
	oo::define B constructor {} {A create test-oo-1.18}
	B create C
	A destroy
    }
} -cleanup {
    rename test-oo-1.18 {}
} -result 0
test oo-1.19 {basic test of OO functionality: teardown order} -body {
    oo::object create o
    namespace delete [info object namespace o]
    o destroy
    # Crashes on error
} -returnCodes error -result {invalid command name "o"}
test oo-1.20 {basic test of OO functionality: my teardown post rename} -body {