Make some fatal errors non-fatal. This means we generate invalid code in
authorJelmer Vernooij <jelmer@samba.org>
Tue, 16 Dec 2008 17:02:14 +0000 (18:02 +0100)
committerJelmer Vernooij <jelmer@samba.org>
Tue, 16 Dec 2008 17:02:14 +0000 (18:02 +0100)
some cases, but we do print errors. We don't use all generated code yet at the
moment, so this isn't much of a problem.

pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
pidl/lib/Parse/Pidl/Samba4.pm

index 4109ce996211ad51881ebbcab302fff32a0461ec..9a7a037b5444c6329d720db8326ff76844982a9d 100644 (file)
@@ -12,7 +12,7 @@ use Exporter;
 @EXPORT_OK = qw(ParseFunction $res $res_hdr ParseOutputArgument);
 
 use strict;
 @EXPORT_OK = qw(ParseFunction $res $res_hdr ParseOutputArgument);
 
 use strict;
-use Parse::Pidl qw(fatal warning);
+use Parse::Pidl qw(fatal warning error);
 use Parse::Pidl::Util qw(has_property ParseExpr);
 use Parse::Pidl::Samba4 qw(DeclLong);
 use Parse::Pidl::Samba4::Header qw(GenerateFunctionInEnv);
 use Parse::Pidl::Util qw(has_property ParseExpr);
 use Parse::Pidl::Samba4 qw(DeclLong);
 use Parse::Pidl::Samba4::Header qw(GenerateFunctionInEnv);
@@ -76,7 +76,11 @@ sub ParseOutputArgument($$$)
        my ($self, $fn, $e) = @_;
        my $level = 0;
 
        my ($self, $fn, $e) = @_;
        my $level = 0;
 
-       fatal($e->{ORIGINAL}, "[out] argument is not a pointer or array") if ($e->{LEVELS}[0]->{TYPE} ne "POINTER" and $e->{LEVELS}[0]->{TYPE} ne "ARRAY");
+       if ($e->{LEVELS}[0]->{TYPE} ne "POINTER" and $e->{LEVELS}[0]->{TYPE} ne "ARRAY") {
+               $self->pidl("return NT_STATUS_NOT_SUPPORTED;");
+               error($e->{ORIGINAL}, "[out] argument is not a pointer or array");
+               return;
+       }
 
        if ($e->{LEVELS}[0]->{TYPE} eq "POINTER") {
                $level = 1;
 
        if ($e->{LEVELS}[0]->{TYPE} eq "POINTER") {
                $level = 1;
index 5bdb91ee2519776433e64227da689ae25697846c..20c518dcebf66beddd2a319a491819ca7c412445 100644 (file)
@@ -12,7 +12,7 @@ require Exporter;
 use Parse::Pidl::Util qw(has_property is_constant);
 use Parse::Pidl::NDR qw(GetNextLevel);
 use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference);
 use Parse::Pidl::Util qw(has_property is_constant);
 use Parse::Pidl::NDR qw(GetNextLevel);
 use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference);
-use Parse::Pidl qw(fatal);
+use Parse::Pidl qw(fatal error);
 use strict;
 
 use vars qw($VERSION);
 use strict;
 
 use vars qw($VERSION);
@@ -69,7 +69,7 @@ sub NumStars($;$)
                $n++;
        }
 
                $n++;
        }
 
-       fatal($e->{ORIGINAL}, "Too few pointers $n < $d") if ($n < $d);
+       error($e->{ORIGINAL}, "Too few pointers $n < $d") if ($n < $d);
 
        $n -= $d;
 
 
        $n -= $d;