summaryrefslogtreecommitdiff
path: root/pidl/lib/Parse/Pidl/NDR.pm
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2009-07-27 15:52:16 +0200
committerStefan Metzmacher <metze@samba.org>2009-07-27 17:51:32 +0200
commit7ccc9a6ef563cc855752b4e74152420b9be5af43 (patch)
treeeeef8cf5ee5bc648b79c7dbf9eee903dac2ce39b /pidl/lib/Parse/Pidl/NDR.pm
parentb7c003c09c06ef5a23beb0928affaba75f65587c (diff)
downloadsamba-7ccc9a6ef563cc855752b4e74152420b9be5af43.tar.gz
samba-7ccc9a6ef563cc855752b4e74152420b9be5af43.tar.bz2
samba-7ccc9a6ef563cc855752b4e74152420b9be5af43.zip
pidl: add support for [string] on fixed size arrays.
midl also supports this: struct { long l1; [string] wchar_t str[16]; long l2; }; Where the wire size of str is encoded like a length_is() header: 4-byte offset == 0; 4-byte array length; The strings are zero terminated. metze
Diffstat (limited to 'pidl/lib/Parse/Pidl/NDR.pm')
-rw-r--r--pidl/lib/Parse/Pidl/NDR.pm7
1 files changed, 7 insertions, 0 deletions
diff --git a/pidl/lib/Parse/Pidl/NDR.pm b/pidl/lib/Parse/Pidl/NDR.pm
index 95cd4b9dc3..8440f0183d 100644
--- a/pidl/lib/Parse/Pidl/NDR.pm
+++ b/pidl/lib/Parse/Pidl/NDR.pm
@@ -142,6 +142,13 @@ sub GetElementLevelTable($$)
$is_fixed = 1 if (not $is_conformant and Parse::Pidl::Util::is_constant($size));
$is_inline = 1 if (not $is_conformant and not Parse::Pidl::Util::is_constant($size));
+ if ($i == 0 and $is_fixed and has_property($e, "string")) {
+ $is_fixed = 0;
+ $is_varying = 1;
+ $is_string = 1;
+ delete($e->{PROPERTIES}->{string});
+ }
+
push (@$order, {
TYPE => "ARRAY",
SIZE_IS => $size,