Hi,

The attached patch provides some fixes and/or improvements to libgst.
You may want to take a look.

Regards,
lee

2016-12-30  Lee Duhem  <lee.du...@gmail.com>

* byte.c (_gst_compile_bytecodes): Remove unnecessary copy.
* comp.c (_gst_compile_method): Protect new created `selector' from GC
properly.
* gst-parse.c (expected): Call va_end.
From 8d6652fddeb7ff7289e8a38d617ff94db7ec3934 Mon Sep 17 00:00:00 2001
From: Lee Duhem <lee.du...@gmail.com>
Date: Fri, 30 Dec 2016 14:34:47 -0600
Subject: [PATCH] libgst: Misc improvements

2016-12-30  Lee Duhem  <lee.du...@gmail.com>

	* byte.c (_gst_compile_bytecodes): Remove unnecessary copy.
	* comp.c (_gst_compile_method): Protect new created `selector' from GC
	properly.
	* gst-parse.c (expected): Call va_end.
---
 libgst/ChangeLog   | 7 +++++++
 libgst/byte.c      | 3 ---
 libgst/comp.c      | 3 +--
 libgst/gst-parse.c | 1 +
 4 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/libgst/ChangeLog b/libgst/ChangeLog
index 0cb646f..64494c5 100644
--- a/libgst/ChangeLog
+++ b/libgst/ChangeLog
@@ -1,5 +1,12 @@
 2016-12-30  Lee Duhem  <lee.du...@gmail.com>
 
+	* byte.c (_gst_compile_bytecodes): Remove unnecessary copy.
+	* comp.c (_gst_compile_method): Protect new created `selector' from GC
+	properly.
+	* gst-parse.c (expected): Call va_end.
+
+2016-12-30  Lee Duhem  <lee.du...@gmail.com>
+
 	* comp.h: Improve comments.
 	* comp.c: Ditto.
 	* files.c: Fix typos in comments.
diff --git a/libgst/byte.c b/libgst/byte.c
index 50ff07c..a90a139 100644
--- a/libgst/byte.c
+++ b/libgst/byte.c
@@ -450,9 +450,6 @@ _gst_compile_bytecodes (gst_uchar * from,
 
   if (free < (to - from))
     {
-      memcpy (_gst_cur_bytecodes->ptr, from, free);
-      _gst_cur_bytecodes->ptr += free;
-      from += free;
       realloc_bytecodes (_gst_cur_bytecodes,
 		         BYTECODE_CHUNK_SIZE + (to - from));
     }
diff --git a/libgst/comp.c b/libgst/comp.c
index f08d057..8f94ce4 100644
--- a/libgst/comp.c
+++ b/libgst/comp.c
@@ -727,6 +727,7 @@ _gst_compile_method (tree_node method,
   _gst_alloc_bytecodes ();
   _gst_push_new_scope ();
   selector = compute_selector (method->v_method.selectorExpr);
+  INC_ADD_OOP (selector);
 
   _gst_compiler_state->debugInfoDict = _gst_identity_dictionary_new (_gst_identity_dictionary_class, 6);
   INC_ADD_OOP (_gst_compiler_state->debugInfoDict);
@@ -742,8 +743,6 @@ _gst_compile_method (tree_node method,
   else
     _gst_line_number (method->location.first_line, LN_RESET | LN_ABSOLUTE);
 
-  INC_ADD_OOP (selector);
-
   if (_gst_declare_tracing)
     printf ("  class %O, selector %O\n", method->v_method.currentClass, selector);
 
diff --git a/libgst/gst-parse.c b/libgst/gst-parse.c
index bd551d8..5fd4f54 100644
--- a/libgst/gst-parse.c
+++ b/libgst/gst-parse.c
@@ -509,6 +509,7 @@ expected (gst_parser *p, int token, ...)
 	named_tokens |= 1 << (token - FIRST_TOKEN);
       token = va_arg (ap, int);
     }
+  va_end (ap);
 
 #define TOKEN_DEF(name, val, str, subsume)				\
   if ((named_tokens & (1 << (val - FIRST_TOKEN))) != 0			\
-- 
2.6.2

_______________________________________________
help-smalltalk mailing list
help-smalltalk@gnu.org
https://lists.gnu.org/mailman/listinfo/help-smalltalk

Reply via email to