]> Nishi Git Mirror - gwion.git/commitdiff
:art: Improve strings
authorJérémie Astor <fennecdjay@gmail.com>
Mon, 11 Jan 2021 15:34:05 +0000 (16:34 +0100)
committerJérémie Astor <fennecdjay@gmail.com>
Mon, 11 Jan 2021 15:34:05 +0000 (16:34 +0100)
src/emit/emit.c

index b8ee6971eac892a5eef5e988bf880c6de8961fee..64e477ba67a665fbb68c73fd53be2b19af9f9bbf 100644 (file)
@@ -607,15 +607,15 @@ ANN static m_bool emit_prim_char(const Emitter emit, const m_str *str) {
 }
 
 ANN static m_bool emit_prim_str(const Emitter emit, const m_str *str) {
-  char c[strlen(*str) + 1];
-  if(strlen(*str)) {
-    strcpy(c, *str);
-    CHECK_BB(escape_str(emit, c, prim_pos(str)));
-  } else c[0] = '\0';
   const Value v = prim_self(str)->value;
-  const Symbol sym = insert_symbol(c);
-  if(!v->d.obj)
-    v->d.obj = new_string2(emit->gwion, NULL, s_name(sym));
+  if(!v->d.obj) {
+    char c[strlen(*str) + 1];
+    if(strlen(*str)) {
+      strcpy(c, *str);
+      CHECK_BB(escape_str(emit, c, prim_pos(str)));
+    } else c[0] = '\0';
+      v->d.obj = new_string2(emit->gwion, NULL, c);
+  }
   regpushi(emit, (m_uint)v->d.obj);
   emit_object_addref(emit, -SZ_INT, 0);
   return GW_OK;