mirror of
https://github.com/samba-team/samba.git
synced 2025-03-09 08:58:35 +03:00
r21332: Fix bug in pidl that prevented value(0) from working. Bug reported by metze.
(This used to be commit 8212a3b8e0d3d59264f659c3f657b165ececefeb)
This commit is contained in:
parent
86c5fe1990
commit
e50dc79226
@ -10,7 +10,8 @@ package Parse::Pidl::Samba4::NDR::Parser;
|
||||
require Exporter;
|
||||
@ISA = qw(Exporter);
|
||||
@EXPORT = qw(is_charset_array);
|
||||
@EXPORT_OK = qw(check_null_pointer GenerateFunctionInEnv GenerateFunctionOutEnv);
|
||||
@EXPORT_OK = qw(check_null_pointer GenerateFunctionInEnv
|
||||
GenerateFunctionOutEnv EnvSubstituteValue GenerateStructEnv);
|
||||
|
||||
use strict;
|
||||
use Parse::Pidl::Typelist qw(hasType getType mapType);
|
||||
@ -234,7 +235,7 @@ sub EnvSubstituteValue($$)
|
||||
|
||||
# Substitute the value() values in the env
|
||||
foreach my $e (@{$s->{ELEMENTS}}) {
|
||||
next unless (my $v = has_property($e, "value"));
|
||||
next unless (defined(my $v = has_property($e, "value")));
|
||||
|
||||
$env->{$e->{NAME}} = ParseExpr($v, $env, $e);
|
||||
}
|
||||
@ -714,7 +715,7 @@ sub ParseElementPush($$$$$)
|
||||
|
||||
start_flags($e);
|
||||
|
||||
if (my $value = has_property($e, "value")) {
|
||||
if (defined(my $value = has_property($e, "value"))) {
|
||||
$var_name = ParseExpr($value, $env, $e->{ORIGINAL});
|
||||
}
|
||||
|
||||
@ -765,7 +766,7 @@ sub ParseElementPrint($$$)
|
||||
|
||||
$var_name = append_prefix($e, $var_name);
|
||||
|
||||
if (my $value = has_property($e, "value")) {
|
||||
if (defined(my $value = has_property($e, "value"))) {
|
||||
$var_name = "(ndr->flags & LIBNDR_PRINT_SET_VALUES)?" . ParseExpr($value,$env, $e->{ORIGINAL}) . ":$var_name";
|
||||
}
|
||||
|
||||
|
@ -4,12 +4,12 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Test::More tests => 16;
|
||||
use Test::More tests => 20;
|
||||
use FindBin qw($RealBin);
|
||||
use lib "$RealBin";
|
||||
use Util;
|
||||
use Parse::Pidl::Util qw(MyDumper);
|
||||
use Parse::Pidl::Samba4::NDR::Parser qw(check_null_pointer GenerateFunctionInEnv GenerateFunctionOutEnv);
|
||||
use Parse::Pidl::Samba4::NDR::Parser qw(check_null_pointer GenerateFunctionInEnv GenerateFunctionOutEnv GenerateStructEnv EnvSubstituteValue);
|
||||
|
||||
my $output;
|
||||
sub print_fn($) { my $x = shift; $output.=$x; }
|
||||
@ -152,3 +152,23 @@ is_deeply({ "foo" => "r->in.foo" }, GenerateFunctionOutEnv($fn));
|
||||
|
||||
$fn = { ELEMENTS => [ { DIRECTION => ["out"], NAME => "foo" } ] };
|
||||
is_deeply({ }, GenerateFunctionInEnv($fn));
|
||||
|
||||
$fn = { ELEMENTS => [ { NAME => "foo" }, { NAME => "bar" } ] };
|
||||
is_deeply({ foo => "r->foo", bar => "r->bar", this => "r" }, GenerateStructEnv($fn));
|
||||
|
||||
$fn = { ELEMENTS => [ { NAME => "foo", PROPERTIES => { value => 3 }} ] };
|
||||
|
||||
my $env = GenerateStructEnv($fn);
|
||||
EnvSubstituteValue($env, $fn);
|
||||
is_deeply($env, { foo => 3, this => "r" });
|
||||
|
||||
$fn = { ELEMENTS => [ { NAME => "foo" }, { NAME => "bar" } ] };
|
||||
$env = GenerateStructEnv($fn);
|
||||
EnvSubstituteValue($env, $fn);
|
||||
is_deeply($env, { foo => 'r->foo', bar => 'r->bar', this => "r" });
|
||||
|
||||
$fn = { ELEMENTS => [ { NAME => "foo", PROPERTIES => { value => 0 }} ] };
|
||||
|
||||
$env = GenerateStructEnv($fn);
|
||||
EnvSubstituteValue($env, $fn);
|
||||
is_deeply($env, { foo => 0, this => "r" });
|
||||
|
Loading…
x
Reference in New Issue
Block a user