mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
pidl: Avoid accidently filling in empty body for types without body.
(This used to be commit 1fe5c1ad07
)
This commit is contained in:
parent
3f9812f951
commit
b36a0aedd2
@ -2688,6 +2688,7 @@ sub NeededType($$$)
|
||||
NeededType($t->{DATA}, $needed, $req) if ($t->{TYPE} eq "TYPEDEF");
|
||||
|
||||
if ($t->{TYPE} eq "STRUCT" or $t->{TYPE} eq "UNION") {
|
||||
return unless defined($t->{ELEMENTS});
|
||||
for my $e (@{$t->{ELEMENTS}}) {
|
||||
$e->{PARENT} = $t;
|
||||
if (has_property($e, "compression")) {
|
||||
|
@ -135,7 +135,9 @@ sub is_scalar($)
|
||||
sub is_scalar($);
|
||||
my $type = shift;
|
||||
|
||||
return 1 if (ref($type) eq "HASH" and $type->{TYPE} eq "SCALAR");
|
||||
return 1 if (ref($type) eq "HASH" and
|
||||
($type->{TYPE} eq "SCALAR" or $type->{TYPE} eq "ENUM" or
|
||||
$type->{TYPE} eq "BITMAP"));
|
||||
|
||||
if (my $dt = getType($type)) {
|
||||
return is_scalar($dt->{DATA}) if ($dt->{TYPE} eq "TYPEDEF");
|
||||
@ -149,7 +151,7 @@ sub is_scalar($)
|
||||
sub scalar_is_reference($)
|
||||
{
|
||||
my $name = shift;
|
||||
|
||||
|
||||
return 1 if (grep(/^$name$/, @reference_scalars));
|
||||
return 0;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test::More tests => 39;
|
||||
use Test::More tests => 40;
|
||||
use FindBin qw($RealBin);
|
||||
use lib "$RealBin";
|
||||
use Util;
|
||||
@ -279,3 +279,5 @@ ok(can_contain_deferred({ TYPE => "STRUCT",
|
||||
ok(not defined(ParseType({TYPE => "ENUM", NAME => "foo" }, "ref")->{ELEMENTS}));
|
||||
# Make sure the elements for a bitmap without body aren't filled in
|
||||
ok(not defined(ParseType({TYPE => "BITMAP", NAME => "foo" }, "ref")->{ELEMENTS}));
|
||||
# Make sure the elements for a union without body aren't filled in
|
||||
ok(not defined(ParseType({TYPE => "UNION", NAME => "foo" }, "ref")->{ELEMENTS}));
|
||||
|
@ -4,7 +4,7 @@
|
||||
# Published under the GNU General Public License
|
||||
use strict;
|
||||
|
||||
use Test::More tests => 65 * 2 + 6;
|
||||
use Test::More tests => 65 * 2 + 7;
|
||||
use FindBin qw($RealBin);
|
||||
use lib "$RealBin";
|
||||
use Util qw(test_errors);
|
||||
@ -153,3 +153,12 @@ is_deeply($x,
|
||||
[ { 'FILE' => '<foo>', 'NAME' => 'foo', 'DATA' => [
|
||||
{ 'FILE' => '<foo>', 'LINE' => 0, 'NAME' => 'y', 'TYPE' => 'TYPEDEF', DATA => { TYPE => 'BITMAP', NAME => 'x' } } ],
|
||||
'TYPE' => 'INTERFACE', 'LINE' => 0 } ]);
|
||||
|
||||
|
||||
# A typedef of a union with no body
|
||||
$x = Parse::Pidl::IDL::parse_string("interface foo { typedef union x y; }", "<foo>");
|
||||
|
||||
is_deeply($x,
|
||||
[ { 'FILE' => '<foo>', 'NAME' => 'foo', 'DATA' => [
|
||||
{ 'FILE' => '<foo>', 'LINE' => 0, 'NAME' => 'y', 'TYPE' => 'TYPEDEF', DATA => { TYPE => 'UNION', NAME => 'x' } } ],
|
||||
'TYPE' => 'INTERFACE', 'LINE' => 0 } ]);
|
||||
|
Loading…
Reference in New Issue
Block a user