Better ODR diagnostics for missing elements which includes additional
[yaz-moved-to-github.git] / odr / odr_int.c
index 3637174..a685761 100644 (file)
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 1995-2002, Index Data
+ * Copyright (c) 1995-2003, Index Data
  * See the file LICENSE for details.
  * Sebastian Hammer, Adam Dickmeiss
  *
- * $Id: odr_int.c,v 1.16 2002-07-25 12:51:08 adam Exp $
+ * $Id: odr_int.c,v 1.19 2003-05-20 19:55:30 adam Exp $
  */
 #if HAVE_CONFIG_H
 #include <config.h>
@@ -26,10 +26,10 @@ int odr_integer(ODR o, int **p, int opt, const char *name)
         o->t_class = ODR_UNIVERSAL;
         o->t_tag = ODR_INTEGER;
     }
-    if ((res = ber_tag(o, p, o->t_class, o->t_tag, &cons, opt)) < 0)
+    if ((res = ber_tag(o, p, o->t_class, o->t_tag, &cons, opt, name)) < 0)
         return 0;
     if (!res)
-        return opt;
+        return odr_missing(o, opt, name);
     if (o->direction == ODR_PRINT)
     {
        odr_prname(o, name);
@@ -38,7 +38,7 @@ int odr_integer(ODR o, int **p, int opt, const char *name)
     }
     if (cons)
     {
-        o->error = OPROTO;
+        odr_seterror(o, OPROTO, 1);
         return 0;
     }
     if (o->direction == ODR_DECODE)