Improve error reporting on init
authorPino Toscano <ptoscano@redhat.com>
Wed, 29 May 2019 09:48:38 +0000 (11:48 +0200)
committerRichard W.M. Jones <rjones@redhat.com>
Wed, 29 May 2019 09:55:36 +0000 (10:55 +0100)
Invoke aug_init with AUG_NO_ERR_CLOSE, so it is possible to provide a
detailed Augeas.Error exception.

augeas-c.c

index 81f87f9..12ca51f 100644 (file)
@@ -211,11 +211,16 @@ ocaml_augeas_create (value rootv, value loadpathv, value flagsv)
     flags |= flag_map[i];
   }
 
-  t = aug_init (root, loadpath, flags);
+  /* Pass AUG_NO_ERR_CLOSE so we raise a detailed Augeas.Error. */
+  t = aug_init (root, loadpath, flags | AUG_NO_ERR_CLOSE);
 
   if (t == NULL)
     raise_init_error ("Augeas.create");
 
+  if (aug_error (t) != AUG_NOERROR) {
+    raise_error_and_maybe_close (t, "Augeas.init", true);
+  }
+
   CAMLreturn (Val_augeas_t (t));
 }