https://gcc.gnu.org/g:938ad303f9d52f26a48505903affa183c88bed84
commit r16-4494-g938ad303f9d52f26a48505903affa183c88bed84 Author: Gaius Mulley <[email protected]> Date: Sun Oct 19 18:48:18 2025 +0100 PR modula2/122333: m2spellcheck.cc remove memset and tidyup This patch removes memset from m2spellcheck_InitCandidates. It corrects a comment boiler plate and removes an unused local variable. Finally it frees up memory used by the candidates_array in KillCandidates. gcc/m2/ChangeLog: PR modula2/122333 * gm2-compiler/M2MetaError.mod (JoinSentances): Remove unused variable. * gm2-gcc/m2spellcheck.cc (m2spellcheck_InitCandidates): Rewrite. (KillCandidates): Deallocate auto_vec candidates_array. (candidates_array_vec_t): New declaration. Signed-off-by: Gaius Mulley <[email protected]> Diff: --- gcc/m2/gm2-compiler/M2MetaError.mod | 2 -- gcc/m2/gm2-gcc/m2spellcheck.cc | 15 ++++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gcc/m2/gm2-compiler/M2MetaError.mod b/gcc/m2/gm2-compiler/M2MetaError.mod index 0ae919636c24..dc14e6b06bea 100644 --- a/gcc/m2/gm2-compiler/M2MetaError.mod +++ b/gcc/m2/gm2-compiler/M2MetaError.mod @@ -1894,8 +1894,6 @@ END IsPunct ; *) PROCEDURE JoinSentances (VAR eb: errorBlock; s: String) ; -VAR - i: INTEGER ; BEGIN IF (s # NIL) AND (Length (s) > 0) THEN diff --git a/gcc/m2/gm2-gcc/m2spellcheck.cc b/gcc/m2/gm2-gcc/m2spellcheck.cc index 22b77ed843d6..c6d0c675a096 100644 --- a/gcc/m2/gm2-gcc/m2spellcheck.cc +++ b/gcc/m2/gm2-gcc/m2spellcheck.cc @@ -1,4 +1,4 @@ -/* m2spellcheck.cc provides an interface to GCC expression trees. +/* m2spellcheck.cc provides an interface to the GCC spell checker. Copyright (C) 2025 Free Software Foundation, Inc. Contributed by Gaius Mulley <[email protected]>. @@ -34,9 +34,10 @@ along with GNU Modula-2; see the file COPYING3. If not see /* Define the hidden type Candidates declared in the definition module. */ +typedef auto_vec<const char *> candidates_array_vec_t; typedef struct Candidates_t { - auto_vec<const char *> candidates_array; + candidates_array_vec_t candidates_array; struct Candidates_t *next; } Candidates; @@ -57,12 +58,13 @@ m2spellcheck_InitCandidates (void) c = freeList; freeList = freeList->next; } - memset (c, 0, sizeof (Candidates)); + :: new (&c->candidates_array) auto_vec<const char *> (); + c->next = NULL; return c; } /* Push a string to the Candidates array. - The candidates array will contain str at the end. */ + The candidates array will contain the string name at the end. */ static void @@ -80,12 +82,15 @@ m2spellcheck_Push (void *cand, const char *name) Push (static_cast<Candidates *> (cand), name); } +/* Return the Candidates structure to the freeList and deallocate + the auto_vec candidates_array. */ + static void KillCandidates (Candidates **cand) { - // --fixme-- deallocate and zero the candidates_array. (*cand)->next = freeList; + (*cand)->candidates_array.~candidates_array_vec_t (); freeList = *cand; (*cand) = NULL; }
