diff options
author | Andrew Tridgell <tridge@samba.org> | 2003-11-23 07:14:17 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2003-11-23 07:14:17 +0000 |
commit | 1b9452ffc5d21bcc621806273a1ab0366843451f (patch) | |
tree | 49c397ff24a839b19fd52ea3ea46c903038fac52 /source4 | |
parent | 03eda9064143093d97b055b1c2a4e5110b139426 (diff) | |
download | samba-1b9452ffc5d21bcc621806273a1ab0366843451f.tar.gz samba-1b9452ffc5d21bcc621806273a1ab0366843451f.tar.bz2 samba-1b9452ffc5d21bcc621806273a1ab0366843451f.zip |
fixed the handling of value() attributes on scalars in IDL that
reference other elements of the same structure
(This used to be commit d8d17be290730670bad0fea91188d394160cb879)
Diffstat (limited to 'source4')
-rw-r--r-- | source4/build/pidl/parser.pm | 14 | ||||
-rw-r--r-- | source4/librpc/idl/dcerpc.idl | 10 | ||||
-rw-r--r-- | source4/librpc/idl/samr.idl | 2 |
3 files changed, 11 insertions, 15 deletions
diff --git a/source4/build/pidl/parser.pm b/source4/build/pidl/parser.pm index 41976cfdc9..59ff73b8e6 100644 --- a/source4/build/pidl/parser.pm +++ b/source4/build/pidl/parser.pm @@ -334,14 +334,14 @@ sub ParseElementPushScalar($$$) start_flags($e); + if (my $value = util::has_property($e, "value")) { + pidl "\t$cprefix$var_prefix$e->{NAME} = $value;\n"; + } + if (util::has_property($e, "relative")) { pidl "\tNDR_CHECK(ndr_push_relative(ndr, NDR_SCALARS, $var_prefix$e->{NAME}, (ndr_push_const_fn_t) ndr_push_$e->{TYPE}));\n"; } elsif (util::is_inline_array($e)) { ParseArrayPush($e, "r->", "NDR_SCALARS"); - } elsif (my $value = util::has_property($e, "value")) { - pidl "\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, $value));\n"; - } elsif (defined $e->{VALUE}) { - pidl "\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, $e->{VALUE}));\n"; } elsif (util::need_wire_pointer($e)) { pidl "\tNDR_CHECK(ndr_push_ptr(ndr, $var_prefix$e->{NAME}));\n"; } elsif (util::need_alloc($e)) { @@ -375,9 +375,7 @@ sub ParseElementPrintScalar($$) return; } - if (defined $e->{VALUE}) { - pidl "\tndr_print_$e->{TYPE}(ndr, \"$e->{NAME}\", $e->{VALUE});\n"; - } elsif (util::has_direct_buffers($e)) { + if (util::has_direct_buffers($e)) { pidl "\tndr_print_ptr(ndr, \"$e->{NAME}\", $var_prefix$e->{NAME});\n"; pidl "\tndr->depth++;\n"; ParseElementPrintBuffer($e, $var_prefix); @@ -478,8 +476,6 @@ sub ParseElementPullScalar($$$) if (util::has_property($e, "relative")) { pidl "\tNDR_CHECK(ndr_pull_relative(ndr, (const void **)&$var_prefix$e->{NAME}, sizeof(*$var_prefix$e->{NAME}), (ndr_pull_flags_fn_t)ndr_pull_$e->{TYPE}));\n"; - } elsif (defined $e->{VALUE}) { - pidl "\tNDR_CHECK(ndr_pull_$e->{TYPE}(ndr, $e->{VALUE}));\n"; } elsif (util::is_inline_array($e)) { ParseArrayPull($e, "r->", "NDR_SCALARS"); } elsif (util::need_wire_pointer($e)) { diff --git a/source4/librpc/idl/dcerpc.idl b/source4/librpc/idl/dcerpc.idl index 14518d6c3d..f24e6ffc45 100644 --- a/source4/librpc/idl/dcerpc.idl +++ b/source4/librpc/idl/dcerpc.idl @@ -84,17 +84,17 @@ interface dcerpc } dcerpc_pkt_type; typedef [nodiscriminant] union { - [case(DCERPC_PKT_REQUEST)] dcerpc_request request; + [case(DCERPC_PKT_REQUEST)] dcerpc_request request; [case(DCERPC_PKT_RESPONSE)] dcerpc_response response; - [case(DCERPC_PKT_BIND)] dcerpc_bind bind; + [case(DCERPC_PKT_BIND)] dcerpc_bind bind; [case(DCERPC_PKT_BIND_ACK)] dcerpc_bind_ack bind_ack; - [case(DCERPC_PKT_FAULT)] dcerpc_fault fault; + [case(DCERPC_PKT_FAULT)] dcerpc_fault fault; } dcerpc_payload; /* pfc_flags values */ - const uint8 DCERPC_PFC_FLAG_FIRST = 0x01; - const uint8 DCERPC_PFC_FLAG_LAST = 0x02; + const uint8 DCERPC_PFC_FLAG_FIRST = 0x01; + const uint8 DCERPC_PFC_FLAG_LAST = 0x02; const uint8 DCERPC_PFC_FLAG_NOCALL = 0x20; typedef [public] struct { diff --git a/source4/librpc/idl/samr.idl b/source4/librpc/idl/samr.idl index eb1d126227..43db18a298 100644 --- a/source4/librpc/idl/samr.idl +++ b/source4/librpc/idl/samr.idl @@ -62,7 +62,7 @@ /* Function: 0x05 */ typedef struct { [value(2*strlen_m(r->name))] uint16 name_len; - [value(2*strlen_m(r->name))] uint16 name_size; + [value(r->name_len)] uint16 name_size; unistr_noterm *name; } samr_Name; |