From c1432f653810b048dd64a9ce58768f7978e17dc6 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 16 Sep 2005 19:50:08 +0000 Subject: [PATCH] * src/symtab.h (struct symbol): Declare the printer and destructor as const, to avoid accidental calls to free. (symbol_destructor_set, symbol_printer_set): Adjust. * src/symtab.c: Adjust. --- ChangeLog | 7 +++++++ src/symtab.c | 4 ++-- src/symtab.h | 10 ++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5864bb7d..9996394c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-09-16 Akim + + * src/symtab.h (struct symbol): Declare the printer and destructor + as const, to avoid accidental calls to free. + (symbol_destructor_set, symbol_printer_set): Adjust. + * src/symtab.c: Adjust. + 2005-09-16 Akim * data/c.m4 (b4_token_enums): New. diff --git a/src/symtab.c b/src/symtab.c index 1e0ec1cc..8cbfc54f 100644 --- a/src/symtab.c +++ b/src/symtab.c @@ -130,7 +130,7 @@ symbol_type_set (symbol *sym, uniqstr type_name, location loc) `------------------------------------------------------------------*/ void -symbol_destructor_set (symbol *sym, char *destructor, location loc) +symbol_destructor_set (symbol *sym, const char *destructor, location loc) { if (destructor) { @@ -147,7 +147,7 @@ symbol_destructor_set (symbol *sym, char *destructor, location loc) `---------------------------------------------------------------*/ void -symbol_printer_set (symbol *sym, char *printer, location loc) +symbol_printer_set (symbol *sym, const char *printer, location loc) { if (printer) { diff --git a/src/symtab.h b/src/symtab.h index 61caa539..0f87c224 100644 --- a/src/symtab.h +++ b/src/symtab.h @@ -60,10 +60,12 @@ struct symbol uniqstr type_name; location type_location; - char *destructor; + /* Does not own the memory. */ + const char *destructor; location destructor_location; - char *printer; + /* Does not own the memory. */ + const char *printer; location printer_location; symbol_number number; @@ -109,10 +111,10 @@ void symbol_make_alias (symbol *sym, symbol *symval, location loc); void symbol_type_set (symbol *sym, uniqstr type_name, location loc); /* Set the DESTRUCTOR associated with SYM. */ -void symbol_destructor_set (symbol *sym, char *destructor, location loc); +void symbol_destructor_set (symbol *sym, const char *destructor, location loc); /* Set the PRINTER associated with SYM. */ -void symbol_printer_set (symbol *sym, char *printer, location loc); +void symbol_printer_set (symbol *sym, const char *printer, location loc); /* Set the PRECEDENCE associated with SYM. Ensure that SYMBOL is a terminal. Do nothing if invoked with UNDEF_ASSOC as ASSOC. */ -- 2.47.2