Commit 41388f7bb5b42c207358d35227c20535d4fd5af4

Thomas de Grivel 2025-04-18T23:29:53

fix tag_init_from_str

diff --git a/lib/kc3/0.1/httpd.kc3 b/lib/kc3/0.1/httpd.kc3
index dd6f1e1..b314571 100644
--- a/lib/kc3/0.1/httpd.kc3
+++ b/lib/kc3/0.1/httpd.kc3
@@ -303,10 +303,12 @@ defmodule HTTPd do
   def routes = []
 
   def def_route = fn (path, controller) {
-    tmp = List.append(HTTPd.routes,
-      %HTTPd.Route{path: path,
-                   controller: controller})
-    def HTTPd.routes = tmp
+    Facts.with_transaction(Facts.env_db(), do
+      tmp = List.append(HTTPd.routes,
+        %HTTPd.Route{path: path,
+                     controller: controller})
+      def HTTPd.routes = tmp
+    end)
   }
 
   def route_and_render_request = fn {
diff --git a/libkc3/env_eval.c b/libkc3/env_eval.c
index b1a3b56..1d79191 100644
--- a/libkc3/env_eval.c
+++ b/libkc3/env_eval.c
@@ -666,7 +666,6 @@ bool env_eval_equal_tag (s_env *env, bool macro, s_tag *a,
   bool is_var_b = false;
   s_tag tmp_a;
   s_tag tmp_b;
-  const s_sym *type = NULL;
   s_tag *var_a;
   s_tag *var_b;
   assert(env);
@@ -810,11 +809,9 @@ bool env_eval_equal_tag (s_env *env, bool macro, s_tag *a,
   if (a->type != b->type) {
     if (! env->silence_errors) {
       err_write_1("env_eval_equal_tag: type mismatch: ");
-      tag_type(a, &type);
-      err_inspect_sym(&type);
+      err_inspect_tag(a);
       err_write_1(" != ");
-      tag_type(b, &type);
-      err_inspect_sym(&type);
+      err_inspect_tag(b);
       err_write_1("\n");
       err_stacktrace();
     }
diff --git a/libkc3/tag.c b/libkc3/tag.c
index 92710d8..db4ffe3 100644
--- a/libkc3/tag.c
+++ b/libkc3/tag.c
@@ -680,7 +680,7 @@ s_tag * tag_init_from_str (s_tag *tag, s_str *str)
   buf_init_const(&buf, str->size, str->ptr.pchar);
   buf.wpos = str->size;
   r = buf_parse_tag(&buf, tag);
-  if (r < 0 || (uw) r != str->size) {
+  if (r < 0) {
     err_write_1("tag_init_str: invalid tag: ");
     err_inspect_str(str);
     err_write_1(", ");