summaryrefslogtreecommitdiff
path: root/ext/Opcode
diff options
context:
space:
mode:
Diffstat (limited to 'ext/Opcode')
-rw-r--r--ext/Opcode/Makefile.PL2
-rw-r--r--ext/Opcode/Opcode.pm6
-rw-r--r--ext/Opcode/Opcode.xs5
3 files changed, 7 insertions, 6 deletions
diff --git a/ext/Opcode/Makefile.PL b/ext/Opcode/Makefile.PL
index c7ddaafd29..7fdcdf6ac1 100644
--- a/ext/Opcode/Makefile.PL
+++ b/ext/Opcode/Makefile.PL
@@ -3,5 +3,5 @@ WriteMakefile(
NAME => 'Opcode',
MAN3PODS => ' ',
VERSION_FROM => 'Opcode.pm',
- XS_VERSION => '1.01'
+ XS_VERSION => '1.02'
);
diff --git a/ext/Opcode/Opcode.pm b/ext/Opcode/Opcode.pm
index b3cfb50374..a35ad1b47b 100644
--- a/ext/Opcode/Opcode.pm
+++ b/ext/Opcode/Opcode.pm
@@ -4,8 +4,8 @@ require 5.002;
use vars qw($VERSION $XS_VERSION @ISA @EXPORT_OK);
-$VERSION = "1.03";
-$XS_VERSION = "1.01";
+$VERSION = "1.04";
+$XS_VERSION = "1.02";
use strict;
use Carp;
@@ -382,7 +382,7 @@ such as open would need to be enabled.
print sysread syswrite send recv
- eof tell seek systell sysseek
+ eof tell seek sysseek
readdir telldir seekdir rewinddir
diff --git a/ext/Opcode/Opcode.xs b/ext/Opcode/Opcode.xs
index ef2be80594..538f0ecf30 100644
--- a/ext/Opcode/Opcode.xs
+++ b/ext/Opcode/Opcode.xs
@@ -46,7 +46,7 @@ op_names_init()
while(i-- > 0)
bitmap[i] = 0xFF;
/* Take care to set the right number of bits in the last byte */
- bitmap[len-1] = ~(0xFF << (maxo & 0x07));
+ bitmap[len-1] = (maxo & 0x07) ? ~(0xFF << (maxo & 0x07)) : 0xFF;
put_op_bitspec(":all",0, opset_all); /* don't mortalise */
}
@@ -290,7 +290,8 @@ invert_opset(opset)
while(len-- > 0)
bitmap[len] = ~bitmap[len];
/* take care of extra bits beyond maxo in last byte */
- bitmap[opset_len-1] &= ~(0xFF << (maxo & 0x07));
+ if (maxo & 07)
+ bitmap[opset_len-1] &= ~(0xFF << (maxo & 0x07));
}
ST(0) = opset;