> Log Message: > Revert part which variable initializations within interleaved gotos. > > again: > if (...) goto err; > void *ptr = alloc(); > if (...) goto again; > if (...) goto err1; > ... > err1: if (ptr) free(ptr); > err: > return; > > This leaks memory if exited with "goto again; -> goto err;".
Actually it did NOT. Because the "if (...) goto again;" part carefully free()'ed the object. In the actual code: 312 if (vp->v_size < origvsize) { 313 rw_exit(&gp->g_glock); 314 if (pgs != pgs_onstack) 315 kmem_free(pgs, pgs_size); 316 goto startover; 317 } Masao -- Masao Uebayashi / Tombi Inc. / Tel: +81-90-9141-4635