Skip to content
This repository was archived by the owner on Dec 11, 2024. It is now read-only.

Commit bbab437

Browse files
authored
Merge pull request #88 from cpanel/bc532-padnameundef
B::PADNAME do not save PL_padname_undef
2 parents 71deaf1 + 2bf6f5d commit bbab437

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

C.xs

+8
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,14 @@ PadnameGEN(padn)
674674
OUTPUT:
675675
RETVAL
676676

677+
bool
678+
PadnameIsUndef(padn)
679+
B::PADNAME padn
680+
CODE:
681+
RETVAL = padn == &PL_padname_undef ? TRUE : FALSE;
682+
OUTPUT:
683+
RETVAL
684+
677685
MODULE = B PACKAGE = B::INVLIST PREFIX = Invlist
678686

679687
int

lib/B/C/OverLoad/B/PADNAME.pm

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,17 @@ our $MAX_PADNAME_LENGTH = 1;
1313
sub do_save {
1414
my ( $pn, $fullname ) = @_;
1515

16+
return q[&PL_padname_undef] if $pn->IsUndef;
17+
1618
my ( $ix, $sym ) = padnamesect()->reserve($pn);
1719
padnamesect()->debug( $fullname, $pn );
1820

1921
my $refcnt = $pn->REFCNT;
22+
my $pv = $pn->PVX;
2023

21-
my $pv = $pn->PVX;
2224
my $xpadn_str = cstring($pv) || '{0}';
2325

24-
my $xpadn_pv = $ix ? sprintf( "((char*)%s)+STRUCT_OFFSET(struct padname_with_str, xpadn_str[0])", $sym ) : 'NULL';
26+
my $xpadn_pv = sprintf( "((char*)%s)+STRUCT_OFFSET(struct padname_with_str, xpadn_str[0])", $sym );
2527

2628
# Track the largest padname length to determine the size of the struct.
2729
my $xpadn_len = $pn->LEN;

0 commit comments

Comments
 (0)