down to one test failure

[email protected] (Richard Clamp) Tue, 13 Aug 2002 20:46:31 +0100
Newsgroups perl.perl1.porters
Message-ID <[email protected]>
--wRRV7LY7NUeQGEoC
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

The attached patch prevents the double-free that t/op.each was
provoking.

This leaves me with one failing test on my local boxes - t/comp.decl,
which currently exits after 5 tests, and throws a big wobbly under
valgrind[0].  I hope to trap this one later this evening.

Are there any more obvious failures that I'm not seeing on my
dev architectures?

[0] http://unixbeard.net/~richardc/lab/grinder/system-malloc/comp.decl.txt

-- 
Richard Clamp <[email protected]>

--wRRV7LY7NUeQGEoC
Content-Type: message/rfc822
Content-Disposition: inline

Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: from mirth.unixbeard.net (mirth [127.0.0.1])
	by mirth (Postfix) with ESMTP id A9523438C
	for <commit>; Tue, 13 Aug 2002 20:29:13 +0100 (BST)
From: [email protected]
To: [email protected]
Subject: perl1 arg.c,1.9,1.10
Message-Id: <20020813192913.A9523438C@mirth>
Date: Tue, 13 Aug 2002 20:29:13 +0100 (BST)

Update of /home/richardc/cvs-repository/perl1
In directory mirth.unixbeard.net:/tmp/cvs-serv7762

Modified Files:
	arg.c 
Log Message:
malloc new arrays else we hit a double free in the freeargs: block of arg.c/eval
fixes t/op.each


Index: arg.c
===================================================================
RCS file: /home/richardc/cvs-repository/perl1/arg.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- arg.c	5 Aug 2002 05:14:28 -0000	1.9
+++ arg.c	13 Aug 2002 19:29:10 -0000	1.10
@@ -1,8 +1,9 @@
 /* $Header$
  *
  * $Log$
- * Revision 1.9  2002/08/05 05:14:28  richardc
- * the symbol is HAS_CRYPT, not CRYPT
+ * Revision 1.10  2002/08/13 19:29:10  richardc
+ * malloc new arrays else we hit a double free in the freeargs: block of arg.c/eval
+ * fixes t/op.each
  *
  * Revision 1.0.1.7  88/02/02  11:22:19  root
  * patch13: fixed split(' ') to work right second time.  Added CRYPT dependency.
@@ -1060,7 +1061,7 @@
 	    apush(ary,str_make(str_get(hiterval(entry))));
     }
     if (retary) { /* array wanted */
-	sarg = (STR**)saferealloc((char*)sarg,(max+2)*sizeof(STR*));
+	sarg = (STR**)safemalloc((max+2)*sizeof(STR*));
 	sarg[0] = Nullstr;
 	sarg[max+1] = Nullstr;
 	for (i = 1; i <= max; i++)
@@ -1087,7 +1088,7 @@
 
     if (retary) { /* array wanted */
 	if (entry) {
-	    sarg = (STR**)saferealloc((char*)sarg,4*sizeof(STR*));
+	    sarg = (STR**)safemalloc(4*sizeof(STR*));
 	    sarg[0] = Nullstr;
 	    sarg[3] = Nullstr;
 	    sarg[1] = mystr = str_make(hiterkey(entry));
@@ -1095,7 +1096,7 @@
 	    *retary = sarg;
 	}
 	else {
-	    sarg = (STR**)saferealloc((char*)sarg,2*sizeof(STR*));
+	    sarg = (STR**)safemalloc(2*sizeof(STR*));
 	    sarg[0] = Nullstr;
 	    sarg[1] = retstr = Nullstr;
 	    *retary = sarg;


--wRRV7LY7NUeQGEoC--