feature/igc3 42aea5ff27e 1/3: Simplify json_make_object_workspace_for_slow_path

Helmut Eller <[email protected]>
Newsgroups gmane.emacs.diffs
Message-ID <[email protected]>
branch: feature/igc3
commit 42aea5ff27ed6fc2148429a05e6c6461382b01e4
Author: Helmut Eller <[email protected]>
Commit: Helmut Eller <[email protected]>

    Simplify json_make_object_workspace_for_slow_path
    
    * src/json.c (json_make_object_workspace_for_slow_path): [HAVE_MPS] Use
    igc_xpalloc_lisp.
---
 src/json.c | 43 +++++++++----------------------------------
 1 file changed, 9 insertions(+), 34 deletions(-)

diff --git a/src/json.c b/src/json.c
index ae9a13977c0..bdb3f6e5d91 100644
--- a/src/json.c
+++ b/src/json.c
@@ -832,52 +832,27 @@ NO_INLINE static void
 json_make_object_workspace_for_slow_path (struct json_parser *parser,
 					  ptrdiff_t size)
 {
-#ifdef HAVE_MPS
-  size_t needed_workspace_size
-    = (parser->object_workspace_current + size);
-  size_t new_workspace_size = parser->object_workspace_size;
-  while (new_workspace_size < needed_workspace_size)
-    {
-      if (ckd_mul (&new_workspace_size, new_workspace_size, 2))
-	{
-	  json_signal_error (parser, Qjson_out_of_memory);
-	}
-    }
-
-  Lisp_Object *new_workspace_ptr;
-  if (parser->object_workspace_size
-      == JSON_PARSER_INTERNAL_OBJECT_WORKSPACE_SIZE)
-    {
-      new_workspace_ptr
-	= igc_xalloc_lisp (new_workspace_size,
-			   "json-parser-object-workspace");
-      memcpy (new_workspace_ptr, parser->object_workspace,
-	      (sizeof (Lisp_Object)
-	       * parser->object_workspace_current));
-    }
-  else
-    {
-      size_t old_size = parser->object_workspace_current;
-      new_workspace_ptr
-	= igc_xnrealloc_lisp (old_size, parser->object_workspace,
-			      new_workspace_size,
-			      "json-parser-object-workspace");
-    }
-#else
   bool internal = (parser->object_workspace_size
 		   == JSON_PARSER_INTERNAL_OBJECT_WORKSPACE_SIZE);
+#ifdef HAVE_MPS
+  Lisp_Object *new_workspace_ptr
+    = igc_xpalloc_lisp (internal ? NULL : parser->object_workspace,
+			&parser->object_workspace_size,
+			size - (parser->object_workspace_size
+				- parser->object_workspace_current),
+			-1, "json-parser-object-workspace");
+#else
   Lisp_Object *new_workspace_ptr
     = xpalloc (internal ? NULL : parser->object_workspace,
 	       &parser->object_workspace_size,
 	       size - (parser->object_workspace_size
 		       - parser->object_workspace_current),
 	       -1, sizeof (Lisp_Object));
+#endif
   if (internal)
     memcpy (new_workspace_ptr, parser->object_workspace,
 	    sizeof (Lisp_Object) * parser->object_workspace_current);
-#endif
   parser->object_workspace = new_workspace_ptr;
-  parser->object_workspace_size = new_workspace_size;
 }
 
 INLINE void
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.