From 8314d1e030bf3d1d10053f125eb706f99f2512e3 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Mon, 27 Dec 2004 20:08:27 +0000 Subject: [PATCH] Integrate: [ 23547] Freak out if h2ph has to translate a macro that contains assembly code. Subject: [PATCH] h2ph vs __asm__ From: Rafael Garcia-Suarez Date: Thu, 25 Nov 2004 17:24:43 +0100 Message-ID: <20041125172443.757a4833@dhcp123.mandrakesoft.com> [ 23628] Subject: [perl #32962] h2ph - use of local() in generated code From: Peter.Dintelmann@dresdner-bank.com (via RT) Date: 8 Dec 2004 15:49:32 -0000 Message-ID: [ 23629] Fix test to cope with the previous h2ph change. [ 23652] Fix for [perl #32491] h2xs incorrectly parses enums with implicit values p4raw-link: @23652 on //depot/perl: baf7177e9c0fbdad246294d1c5ccab2ffb2ea28e p4raw-link: @23629 on //depot/perl: 3c92c9627796cd16c5fbd7af8565ba482fc80938 p4raw-link: @23628 on //depot/perl: d02b64de5f9ba499420a267adddd8f43af075dad p4raw-link: @23547 on //depot/perl: 32aeac00e3860b7bf1ab7236d73b402bf093834b p4raw-id: //depot/maint-5.8/perl@23687 p4raw-integrated: from //depot/perl@23686 'copy in' t/lib/h2ph.pht (@21159..) 'merge in' utils/h2xs.PL (@23228..) p4raw-integrated: from //depot/perl@23547 'ignore' utils/h2ph.PL (@22933..) --- t/lib/h2ph.pht | 8 ++++---- utils/h2ph.PL | 5 +++-- utils/h2xs.PL | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/t/lib/h2ph.pht b/t/lib/h2ph.pht index e03cbb9..7b29896 100644 --- a/t/lib/h2ph.pht +++ b/t/lib/h2ph.pht @@ -4,13 +4,13 @@ no warnings 'redefine'; unless(defined(&SQUARE)) { sub SQUARE { - local($x) = @_; + my($x) = @_; eval q((($x)*($x))); } } unless(defined(&ERROR)) { eval 'sub ERROR { - local($x) = @_; + my($x) = @_; eval q( &fprintf( &stderr, \\"%s\\\\n\\", $x->[2][3][0])); }' unless defined(&ERROR); } @@ -19,12 +19,12 @@ unless(defined(&_H2PH_H_)) { # "$Revision h2ph.h,v 1.0 98/05/04 20:42:14 billy $" undef(&MAX) if defined(&MAX); eval 'sub MAX { - local($a,$b) = @_; + my($a,$b) = @_; eval q((($a) > ($b) ? ($a) : ($b))); }' unless defined(&MAX); if(defined(&__SOME_UNIMPORTANT_PROPERTY)) { eval 'sub MIN { - local($a,$b) = @_; + my($a,$b) = @_; eval q((($a) < ($b) ? ($a) : ($b))); }' unless defined(&MIN); } diff --git a/utils/h2ph.PL b/utils/h2ph.PL index c6a39c9..81e23f6 100644 --- a/utils/h2ph.PL +++ b/utils/h2ph.PL @@ -142,7 +142,7 @@ while (defined (my $file = next_file())) { $curargs{$arg} = 1; } $args =~ s/\b(\w)/\$$1/g; - $args = "local($args) = \@_;\n$t "; + $args = "my($args) = \@_;\n$t "; } s/^\s+//; expr(); @@ -338,7 +338,7 @@ while (defined (my $file = next_file())) { } $args = ( @args - ? "local(" . (join ',', map "\$$_", @args) . ") = \@_;\n$t " + ? "my(" . (join ',', map "\$$_", @args) . ") = \@_;\n$t " : "" ); my $proto = @args ? '' : '() '; @@ -391,6 +391,7 @@ if ($opt_e && (scalar(keys %bad_file) > 0)) { exit $Exit; sub expr { + $new = '"(assembly code)"' and return if /\b__asm__\b/; # freak out. my $joined_args; if(keys(%curargs)) { $joined_args = join('|', keys(%curargs)); diff --git a/utils/h2xs.PL b/utils/h2xs.PL index 9132bc9..2f0f350 100644 --- a/utils/h2xs.PL +++ b/utils/h2xs.PL @@ -900,8 +900,8 @@ if( @path_h ){ next if $opt_e && $enum_name =~ /$opt_e/; my $val = 0; for my $item (split /,/, $enum_body) { - my ($key, $declared_val) = $item =~ /(\w+)\s*=\s*(.*)/; - $val = length($declared_val) ? $declared_val : 1 + $val; + my ($key, $declared_val) = $item =~ /(\w+)\s*(?:=\s*(.*))?/; + $val = defined($declared_val) && length($declared_val) ? $declared_val : 1 + $val; $seen_define{$key} = $declared_val; $const_names{$key}++; } -- 1.8.3.1