X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftrace%2Flib_tracechr.c;h=36158d6f45a6725d455ed9db17d293ef155f9f9a;hp=a1f9f5aa27069bdb8b22e5e3d3b8a9e3922e9b56;hb=e5d1530ca229aef94a3c84ad33f8ae89f35c4045;hpb=7a6bbc8cf41c5186d46accc3d08622dc86526b34 diff --git a/ncurses/trace/lib_tracechr.c b/ncurses/trace/lib_tracechr.c index a1f9f5aa..36158d6f 100644 --- a/ncurses/trace/lib_tracechr.c +++ b/ncurses/trace/lib_tracechr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -39,10 +40,12 @@ #include -MODULE_ID("$Id: lib_tracechr.c,v 1.20 2009/04/18 22:48:29 tom Exp $") +MODULE_ID("$Id: lib_tracechr.c,v 1.23 2020/02/02 23:34:34 tom Exp $") #ifdef TRACE +#define MyBufSize sizeof(_nc_globals.tracechr_buf) + NCURSES_EXPORT(char *) _nc_tracechar(SCREEN *sp, int ch) { @@ -55,19 +58,22 @@ _nc_tracechar(SCREEN *sp, int ch) name = safe_keyname(SP_PARM, ch); if (name == 0 || *name == '\0') name = "NULL"; - (void) sprintf(MyBuffer, "'%.30s' = %#03o", name, ch); + _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize) + "'%.30s' = %#03o", name, ch); } else if (!is8bits(ch) || !isprint(UChar(ch))) { /* * workaround for glibc bug: * sprintf changes the result from unctrl() to an empty string if it * does not correspond to a valid multibyte sequence. */ - (void) sprintf(MyBuffer, "%#03o", ch); + _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize) + "%#03o", ch); } else { name = safe_unctrl(SP_PARM, (chtype) ch); if (name == 0 || *name == 0) name = "null"; /* shouldn't happen */ - (void) sprintf(MyBuffer, "'%.30s' = %#03o", name, ch); + _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize) + "'%.30s' = %#03o", name, ch); } return (MyBuffer); }