<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -152,11 +152,16 @@ static PkRef build(PkJsonDecoder *decoder, PkASTNode *node, PkError **errorPtr)
     if (PK_AST_NODE_UNARY_OP(node) != '-' ||
         !operand || PK_AST_NODE_TYPE(operand) != kPkASTNodeNumber)
     {
-      PkAbort2(
-        &quot;The unary minus operator applied to unsigned integer is only allowed: &quot;
-        &quot;operator='%c', operand=%d&quot;,
-        PK_AST_NODE_UNARY_OP(node),
-        PK_AST_NODE_TYPE(operand));
+      if (errorPtr != NULL) {
+        *errorPtr = PkErrorCreateWithFormat(
+            kPkErrorBuiltinDomain,
+            kPkErrorSemanticError,
+            &quot;The unary minus operator applied to unsigned integer is only allowed: &quot;
+            &quot;operator='%c', operand=%d&quot;,
+            PK_AST_NODE_UNARY_OP(node),
+            PK_AST_NODE_TYPE(operand));
+      }
+      return NULL;
     }
 
     return PkNumberNagate(PK_AST_NODE_NUMBER_NUMBER(operand));
@@ -215,7 +220,13 @@ static PkRef build(PkJsonDecoder *decoder, PkASTNode *node, PkError **errorPtr)
     return array;
   }
   default:
-    PkAbort1(&quot;Unrecognized node:%d&quot;, PK_AST_NODE_TYPE(node));
+    if (errorPtr != NULL) {
+      *errorPtr = PkErrorCreateWithFormat(
+          kPkErrorBuiltinDomain,
+          kPkErrorSemanticError,
+          &quot;Unrecognized node:%d&quot;,
+          PK_AST_NODE_TYPE(node));
+    }
     break;
   }
 
@@ -230,10 +241,14 @@ PkRef PkJsonDecoderDecode(PkJsonDecoder *decoder, PkError **errorPtr) {
     const PkASTNodeType type = PK_AST_NODE_TYPE(node);
 
     if (type != kPkASTNodeObject &amp;&amp; type != kPkASTNodeArray) {
-      PkAbort1(
-          &quot;Top level has to be an object {...} or array [...], &quot;
-          &quot;but was an unrecognized node (type: %d)&quot;,
-          type);
+      if (errorPtr != NULL) {
+        *errorPtr = PkErrorCreateWithFormat(
+            kPkErrorBuiltinDomain,
+            kPkErrorSemanticError,
+            &quot;Top level has to be an object {...} or array [...], &quot;
+            &quot;but was an unrecognized node (type: %d)&quot;,
+            type);
+      }
     } else {
       value = build(decoder, node, errorPtr);
     }</diff>
      <filename>src/json.c</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8a0dfa1ca1331d50b51beed387531e790c00cc6d</id>
    </parent>
  </parents>
  <author>
    <name>Takanori Ishikawa</name>
    <email>takanori.ishikawa@gmail.com</email>
  </author>
  <url>http://github.com/ishikawa/pekoe/commit/0a49fac68c88c79f758bf60ff5913a123d52681d</url>
  <id>0a49fac68c88c79f758bf60ff5913a123d52681d</id>
  <committed-date>2009-10-14T07:48:14-07:00</committed-date>
  <authored-date>2009-10-14T07:48:14-07:00</authored-date>
  <message>Use PkError object instead of assert, PkAbort function in json.c</message>
  <tree>7f18442d446179130e0f41ca7d350f6aa91061a5</tree>
  <committer>
    <name>Takanori Ishikawa</name>
    <email>takanori.ishikawa@gmail.com</email>
  </committer>
</commit>
