summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/pidl/lib/Parse/Pidl/NDR.pm11
1 files changed, 8 insertions, 3 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm
index a478c15873..f35ea461aa 100644
--- a/source4/pidl/lib/Parse/Pidl/NDR.pm
+++ b/source4/pidl/lib/Parse/Pidl/NDR.pm
@@ -1052,9 +1052,14 @@ sub ValidInterface($)
ValidProperties($interface,"INTERFACE");
- if (has_property($interface, "pointer_default") &&
- $interface->{PROPERTIES}->{pointer_default} eq "ptr") {
- fatal $interface, "Full pointers are not supported yet\n";
+ if (has_property($interface, "pointer_default")) {
+ if ($interface->{PROPERTIES}->{pointer_default} eq "ptr") {
+ nonfatal $interface, "Full pointers are not supported yet, falling back to unique";
+ $interface->{PROPERTIES}->{pointer_default} = "unique";
+ } elsif (not grep (/$interface->{PROPERTIES}->{pointer_default}/,
+ ("ref", "unique", "ptr"))) {
+ fatal $interface, "Unknown default pointer type `$interface->{PROPERTIES}->{pointer_default}'";
+ }
}
if (has_property($interface, "object")) {