bug-mes
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] mescc: initialize missing struct fields to 0


From: Ekaitz Zarraga
Subject: Re: [PATCH] mescc: initialize missing struct fields to 0
Date: Tue, 22 Aug 2023 09:51:06 +0000

Previous patch was broken, it has to be "0" 




>From 8476255a609a5c10f74deb80b1dfb81d0659efe5 Mon Sep 17 00:00:00 2001
From: Ekaitz Zarraga <ekaitz@elenq.tech>
Date: Mon, 21 Aug 2023 15:54:37 +0200
Subject: [PATCH] mescc: initialize missing struct fields to 0

There was a debug "22" leaking in compile.scm. It should be a 0.

* module/mescc/compile.scm (init-local): replace "22" with 0.
* lib/tests/scaffold/7v-struct-initialize-zeroes.c: New test.
* build-aux/check-mescc.sh (tcc_tests): Add it.
---
 build-aux/check-mescc.sh                      |  2 +
 .../scaffold/7v-struct-initialize-zeroes.c    | 40 +++++++++++++++++++
 module/mescc/compile.scm                      |  2 +-
 3 files changed, 43 insertions(+), 1 deletion(-)
 create mode 100644 lib/tests/scaffold/7v-struct-initialize-zeroes.c

diff --git a/build-aux/check-mescc.sh b/build-aux/check-mescc.sh
index 6ba0bf15..020b1245 100755
--- a/build-aux/check-mescc.sh
+++ b/build-aux/check-mescc.sh
@@ -3,6 +3,7 @@
 # GNU Mes --- Maxwell Equations of Software
 # Copyright © 2017,2018,2019,2020,2022,2023 Jan (janneke) Nieuwenhuizen 
<janneke@gnu.org>
 # Copyright © 2023 Andrius Štikonas <andrius@stikonas.eu>
+# Copyright © 2023 Ekaitz Zarraga <ekaitz@elenq.tech>
 #
 # This file is part of GNU Mes.
 #
@@ -192,6 +193,7 @@ lib/tests/scaffold/7u-inc-byte-word.c
 lib/tests/scaffold/7u-struct-func.c
 lib/tests/scaffold/7u-struct-size10.c
 lib/tests/scaffold/7u-vstack.c
+lib/tests/scaffold/7v-struct-initialize-zeroes.c
 lib/tests/scaffold/70-array-in-struct-init.c
 lib/tests/scaffold/70-struct-short-enum-init.c
 lib/tests/scaffold/70-struct-post.c
diff --git a/lib/tests/scaffold/7v-struct-initialize-zeroes.c 
b/lib/tests/scaffold/7v-struct-initialize-zeroes.c
new file mode 100644
index 00000000..443b8865
--- /dev/null
+++ b/lib/tests/scaffold/7v-struct-initialize-zeroes.c
@@ -0,0 +1,40 @@
+/* -*-comment-start: "//";comment-end:""-*-
+ * GNU Mes --- Maxwell Equations of Software
+ * Copyright © 2023 Ekaitz Zarraga <ekaitz@elenq.tech>
+ *
+ * This file is part of GNU Mes.
+ *
+ * GNU Mes is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or (at
+ * your option) any later version.
+ *
+ * GNU Mes is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+struct A {
+    int a;
+    int b;
+    int c;
+};
+
+
+int
+main ()
+{
+  struct A x = {0};
+  if (x.a != 0)
+    return 1;
+  if (x.b != 0)
+    return 2;
+  if (x.c != 0)
+    return 3;
+
+  return 0;
+}
diff --git a/module/mescc/compile.scm b/module/mescc/compile.scm
index 6eda37ad..e5b05611 100644
--- a/module/mescc/compile.scm
+++ b/module/mescc/compile.scm
@@ -2171,7 +2171,7 @@
                             (let* ((missing (max 0 (- (length field+counts) 
(length inits))))
                                    (counts (map cdr field+counts))
                                    (fields (map car field+counts))
-                                   (info (fold (cut init-struct-field local <> 
<> <> <>) info fields counts (append inits (map (const '(p-expr (fixed "22"))) 
(iota missing))))))
+                                   (info (fold (cut init-struct-field local <> 
<> <> <>) info fields counts (append inits (map (const '(p-expr (fixed "0"))) 
(iota missing))))))
                               ;; bah, loopme!
                               ;;(loop (list-tail field+counts (length 
field-fields)) (list-tail inits (length field-inits)) info)
                               info)))))))
-- 
2.41.0





reply via email to

[Prev in Thread] Current Thread [Next in Thread]