json_load_file: Initialize the error struct properly
authorPetri Lehtinen <petri@digip.org>
Tue, 27 Oct 2009 15:46:57 +0000 (17:46 +0200)
committerPetri Lehtinen <petri@digip.org>
Tue, 27 Oct 2009 15:56:02 +0000 (17:56 +0200)
Failing to do this has the effect that the error message is not
returned when the input file cannot be opened (e.g. if it doesn't
exist).

Thanks to Martin Vopatek for reporting.

src/load.c
test/.gitignore
test/testprogs/Makefile.am
test/testprogs/test_load.c [new file with mode: 0644]

index f004525..53241ff 100644 (file)
@@ -864,6 +864,8 @@ json_t *json_load_file(const char *path, json_error_t *error)
     json_t *result;
     FILE *fp;
 
+    error_init(error);
+
     fp = fopen(path, "r");
     if(!fp)
     {
index 09dfb4d..ac70552 100644 (file)
@@ -3,6 +3,7 @@ loads_dumps
 load_file_dump_file
 testlogs
 testprogs/test_array
+testprogs/test_load
 testprogs/test_number
 testprogs/test_object
 testprogs/test_simple
index 400a998..41807ed 100644 (file)
@@ -1,6 +1,7 @@
-check_PROGRAMS = test_array test_simple test_number test_object
+check_PROGRAMS = test_array test_load test_simple test_number test_object
 
 test_array_SOURCES = test_array.c util.h
+test_load_SOURCES = test_load.c util.h
 test_simple_SOURCES = test_simple.c util.h
 test_number_SOURCES = test_number.c util.h
 test_object_SOURCES = test_object.c util.h
diff --git a/test/testprogs/test_load.c b/test/testprogs/test_load.c
new file mode 100644 (file)
index 0000000..4d8fa88
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2009 Petri Lehtinen <petri@digip.org>
+ *
+ * Jansson is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See LICENSE for details.
+ */
+
+#include <jansson.h>
+#include <string.h>
+#include "util.h"
+
+int main()
+{
+    json_t *json;
+    json_error_t error;
+
+    json = json_load_file("/path/to/nonexistent/file.json", &error);
+    if(error.line != -1)
+        fail("json_load_file returned an invalid line number");
+    if(strcmp(error.text, "unable to open /path/to/nonexistent/file.json: No such file or directory") != 0)
+        fail("json_load_file returned an invalid error message");
+
+    return 0;
+}