patch 7.4.1164
Problem:    No tests for comparing special variables.  Error in jsondecode()
            not reported.  test_json does not work Japanse system.
Solution:   Set scriptencoding. (Ken Takata) Add a few more tests. Add error.
diff --git a/src/json.c b/src/json.c
index accb6cf..e447383 100644
--- a/src/json.c
+++ b/src/json.c
@@ -220,7 +220,7 @@
     listitem_T	*li;
 
     if (rettv_list_alloc(res) == FAIL)
-	goto fail;
+	goto failsilent;
     ++reader->js_used; /* consume the '[' */
 
     while (TRUE)
@@ -253,6 +253,8 @@
 	    goto fail;
     }
 fail:
+    EMSG(_(e_invarg));
+failsilent:
     res->v_type = VAR_SPECIAL;
     res->vval.v_number = VVAL_NONE;
 }
@@ -268,7 +270,7 @@
     char_u	*key;
 
     if (rettv_dict_alloc(res) == FAIL)
-	goto fail;
+	goto failsilent;
     ++reader->js_used; /* consume the '{' */
 
     while (TRUE)
@@ -293,7 +295,7 @@
 	    if (key != NULL)
 		EMSG(_(e_emptykey));
 	    clear_tv(&tvkey);
-	    goto fail;
+	    goto failsilent;
 	}
 
 	json_skip_white(reader);
@@ -329,6 +331,8 @@
 	    goto fail;
     }
 fail:
+    EMSG(_(e_invarg));
+failsilent:
     res->v_type = VAR_SPECIAL;
     res->vval.v_number = VVAL_NONE;
 }