missing prototype for MONITOR_HEAP config
|alloc.c:159:1: warning: no previous prototype for function 'dupstr' after adding -Wmissing-prototypes to my CFLAGS (plus MONITOR_HEAP defined in config.h). I don't why I never noticed this before. It wasn't triggered by any recent changes.
This commit is contained in:
+35
-4
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.7 global.h $NHDT-Date: 1574982019 2019/11/28 23:00:19 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.92 $ */
|
/* NetHack 3.7 global.h $NHDT-Date: 1594032649 2020/07/06 10:50:49 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.104 $ */
|
||||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||||
/*-Copyright (c) Michael Allison, 2006. */
|
/*-Copyright (c) Michael Allison, 2006. */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
@@ -286,11 +286,42 @@ extern struct cross_target_s cross_target;
|
|||||||
#define Vsprintf (void) vsprintf
|
#define Vsprintf (void) vsprintf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* primitive memory leak debugging; see alloc.c */
|
/*
|
||||||
|
* Memory allocation. Functions are declared here rather than in
|
||||||
|
* extern.h so that source files which use config.h instead of hack.h
|
||||||
|
* will see the declarations.
|
||||||
|
*
|
||||||
|
* NetHack does not use malloc() [except to implement alloc() in alloc.c]
|
||||||
|
* or realloc() or calloc(). They return Null if memory runs out and
|
||||||
|
* nethack's code relies on alloc() to intercept that so that a zillion
|
||||||
|
* callers don't need to test for Null result. alloc() never returns
|
||||||
|
* Null; if memory runs out, it calls panic() and does not return at all.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* dupstr() is unconditional in alloc.c but not used when MONITOR_HEAP
|
||||||
|
is enabled; some utility programs link with alloc.{o,obj} and need it
|
||||||
|
if nethack is built with MONITOR_HEAP enabled and they aren't; this
|
||||||
|
declaration has been moved out of the '#else' below to avoid getting
|
||||||
|
a complaint from -Wmissing-prototypes when building with MONITOR_HEAP */
|
||||||
|
extern char *FDECL(dupstr, (const char *));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* MONITOR_HEAP is conditionally used for primitive memory leak debugging.
|
||||||
|
* When enabled, NH_HEAPLOG (if defined in the environment) is used as the
|
||||||
|
* name of a log file to create for capturing allocations and releases.
|
||||||
|
* [The 'heaputil' program to analyze that file isn't included in releases.]
|
||||||
|
*
|
||||||
|
* See alloc.c.
|
||||||
|
*/
|
||||||
#ifdef MONITOR_HEAP
|
#ifdef MONITOR_HEAP
|
||||||
|
/* plain alloc() is not declared except in alloc.c */
|
||||||
extern long *FDECL(nhalloc, (unsigned int, const char *, int));
|
extern long *FDECL(nhalloc, (unsigned int, const char *, int));
|
||||||
extern void FDECL(nhfree, (genericptr_t, const char *, int));
|
extern void FDECL(nhfree, (genericptr_t, const char *, int));
|
||||||
extern char *FDECL(nhdupstr, (const char *, const char *, int));
|
extern char *FDECL(nhdupstr, (const char *, const char *, int));
|
||||||
|
/* this predates C99's __func__; that is trickier to use conditionally
|
||||||
|
because it is not implemented as a preprocessor macro; MONITOR_HEAP
|
||||||
|
wouldn't gain much benefit from it anyway so continue to live without it;
|
||||||
|
if func's caller were accessible, that would be a very different issue */
|
||||||
#ifndef __FILE__
|
#ifndef __FILE__
|
||||||
#define __FILE__ ""
|
#define __FILE__ ""
|
||||||
#endif
|
#endif
|
||||||
@@ -301,9 +332,9 @@ extern char *FDECL(nhdupstr, (const char *, const char *, int));
|
|||||||
#define free(a) nhfree(a, __FILE__, (int) __LINE__)
|
#define free(a) nhfree(a, __FILE__, (int) __LINE__)
|
||||||
#define dupstr(s) nhdupstr(s, __FILE__, (int) __LINE__)
|
#define dupstr(s) nhdupstr(s, __FILE__, (int) __LINE__)
|
||||||
#else /* !MONITOR_HEAP */
|
#else /* !MONITOR_HEAP */
|
||||||
|
/* declare alloc.c's alloc(); allocations made with it use ordinary free() */
|
||||||
extern long *FDECL(alloc, (unsigned int)); /* alloc.c */
|
extern long *FDECL(alloc, (unsigned int)); /* alloc.c */
|
||||||
extern char *FDECL(dupstr, (const char *)); /* ditto */
|
#endif /* ?MONITOR_HEAP */
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Used for consistency checks of various data files; declare it here so
|
/* Used for consistency checks of various data files; declare it here so
|
||||||
that utility programs which include config.h but not hack.h can see it. */
|
that utility programs which include config.h but not hack.h can see it. */
|
||||||
|
|||||||
Reference in New Issue
Block a user