cvsuser 04/08/20 06:39:37
Modified: t/pmc perlhash.t
src key.c
Log:
Fix an infinite loop in key_string
Courtesy of Steve Fink <[EMAIL PROTECTED]>
Revision Changes Path
1.45 +18 -2 parrot/t/pmc/perlhash.t
Index: perlhash.t
===================================================================
RCS file: /cvs/public/parrot/t/pmc/perlhash.t,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -w -r1.44 -r1.45
--- perlhash.t 19 Apr 2004 12:15:22 -0000 1.44
+++ perlhash.t 20 Aug 2004 13:39:36 -0000 1.45
@@ -1,7 +1,7 @@
#! perl
# Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-# $Id: perlhash.t,v 1.44 2004/04/19 12:15:22 leo Exp $
+# $Id: perlhash.t,v 1.45 2004/08/20 13:39:36 dan Exp $
=head1 NAME
@@ -19,7 +19,7 @@
=cut
-use Parrot::Test tests => 34;
+use Parrot::Test tests => 35;
use Test::More;
output_is(<<CODE, <<OUTPUT, "Initial PerlHash tests");
@@ -691,6 +691,22 @@
12
OUTPUT
+output_is(<< 'CODE', << 'OUTPUT', "Getting PMCs from string;int compound keys");
+ new P0, .PerlHash
+ new P1, .PerlHash
+ new P2, .PerlInt
+ set P2, 4
+ set P1[0], P2
+ set P0["a"], P1
+ set I0, P0["a";0]
+ print "Four is "
+ print I0
+ print "\n"
+ end
+CODE
+Four is 4
+OUTPUT
+
# A hash is only false if it has size 0
output_is(<<'CODE', <<OUTPUT, "if (PerlHash)");
1.52 +5 -1 parrot/src/key.c
Index: key.c
===================================================================
RCS file: /cvs/public/parrot/src/key.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -w -r1.51 -r1.52
--- key.c 8 Jul 2004 10:19:11 -0000 1.51
+++ key.c 20 Aug 2004 13:39:37 -0000 1.52
@@ -1,6 +1,6 @@
/*
Copyright: 2001-2003 The Perl Foundation. All Rights Reserved.
-$Id: key.c,v 1.51 2004/07/08 10:19:11 leo Exp $
+$Id: key.c,v 1.52 2004/08/20 13:39:37 dan Exp $
=head1 NAME
@@ -357,6 +357,10 @@
case KEY_pmc_FLAG | KEY_register_FLAG:
reg = interpreter->pmc_reg.registers[PMC_int_val(key)];
return VTABLE_get_string(interpreter, reg);
+ case KEY_integer_FLAG:
+ return string_from_int(interpreter, PMC_int_val(key));
+ case KEY_integer_FLAG | KEY_register_FLAG:
+ return string_from_int(interpreter,
interpreter->int_reg.registers[PMC_int_val(key)]);
default:
case KEY_pmc_FLAG:
return VTABLE_get_string(interpreter, key);