--- freem/src/objects.c 2025/03/09 15:20:18 1.2 +++ freem/src/objects.c 2025/04/13 04:22:43 1.6 @@ -1,23 +1,11 @@ /* - * * - * * * - * * * - * *************** - * * * * * - * * MUMPS * - * * * * * - * *************** - * * * - * * * - * * - * - * objects.c + * $Id: objects.c,v 1.6 2025/04/13 04:22:43 snw Exp $ * implementation of OO support * * * Author: Serena Willis * Copyright (C) 1998 MUG Deutschland - * Copyright (C) 2023 Coherent Logic Development LLC + * Copyright (C) 2023, 2025 Coherent Logic Development LLC * * * This file is part of FreeM. @@ -35,6 +23,22 @@ * You should have received a copy of the GNU Affero Public License * along with FreeM. If not, see . * + * $Log: objects.c,v $ + * Revision 1.6 2025/04/13 04:22:43 snw + * Fix snprintf calls + * + * Revision 1.5 2025/04/10 01:24:38 snw + * Remove C++ style comments + * + * Revision 1.4 2025/04/09 19:52:02 snw + * Eliminate as many warnings as possible while building with -Wall + * + * Revision 1.3 2025/03/09 19:50:47 snw + * Second phase of REUSE compliance and header reformat + * + * + * SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC + * SPDX-License-Identifier: AGPL-3.0-or-later **/ #include #include @@ -123,8 +127,8 @@ void obj_set_attribute(char *inst, char char t_key[255]; char t_data[255]; - snprintf (t_key, 254, "^$OBJECT\202%s\202%s\201", inst, attrib); - snprintf (t_data, 254, "%s\201", value); + snprintf (t_key, sizeof (t_key) - 1, "^$OBJECT\202%s\202%s\201", inst, attrib); + snprintf (t_data, sizeof (t_data) - 1, "%s\201", value); symtab_bltin (set_sym, t_key, t_data); } @@ -133,14 +137,14 @@ short obj_get_attribute(char *inst, char { char t_key[255]; - snprintf (t_key, 254, "^$OBJECT\202%s\202%s\201", inst, attrib); + snprintf (t_key, sizeof (t_key) - 1, "^$OBJECT\202%s\202%s\201", inst, attrib); symtab_bltin (get_sym, t_key, buf); if (merr () == UNDEF || merr () == M6) { if (strcmp (attrib, "CLASS") == 0) { - // non-object variables always belong to the ^%STRING class + /* non-object variables always belong to the ^%STRING class */ snprintf (buf, 9, "^%%STRING"); merr_clear (); @@ -161,19 +165,19 @@ short obj_get_attribute(char *inst, char void obj_destroy(char *inst) { - char t_key[255]; + char t_key[256]; - snprintf (t_key, 254, "^$OBJECT\202\%s\201", inst); + snprintf (t_key, sizeof (t_key) - 1, "^$OBJECT\202\%s\201", inst); symtab_bltin (kill_sym, t_key, " \201"); } void obj_create_symbols(char *objvar, char *class) { - char t_key[255]; - char t_data[255]; + char t_key[256]; + char t_data[256]; - snprintf (t_key, 254, "%s\201", objvar); - snprintf (t_data, 254, " \201"); + snprintf (t_key, sizeof (t_key) - 1, "%s\201", objvar); + snprintf (t_data, sizeof (t_data) - 1, " \201"); symtab_bltin (set_sym, t_key, t_data); @@ -186,9 +190,6 @@ void obj_get_constructor(char *construct freem_ref_t inref; freem_ref_t outref; register int i; - int argct; - - argct = 0; mref_init (&inref, MREF_RT_GLOBAL, ""); internal_to_mref (&inref, class); @@ -197,13 +198,13 @@ void obj_get_constructor(char *construct strcpy (outref.name, inref.name); outref.subscript_count = inref.subscript_count + 1; - snprintf (outref.subscripts[0], 255, ".%s", instvar); + snprintf (outref.subscripts[0], STRLEN - 1, ".%s", instvar); for (i = 0; i < inref.subscript_count; i++) { strcpy (outref.subscripts[i + 1], inref.subscripts[i]); } -// mref_to_internal_prealloc (constructor, &outref); + mref_to_external (&outref, constructor); return;