diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index 4afde0d4f..7266bd797 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -2896,11 +2896,11 @@ rig_need_debug HAMLIB_PARAMS((enum rig_debug_level_e debug_level)); #define DEBUGMSGSAVE_SIZE 24000 extern HAMLIB_EXPORT_VAR(char) debugmsgsave[DEBUGMSGSAVE_SIZE]; // last debug msg extern HAMLIB_EXPORT_VAR(char) debugmsgsave2[DEBUGMSGSAVE_SIZE]; // last-1 debug msg +extern HAMLIB_EXPORT_VAR(char) debugmsgsave3[DEBUGMSGSAVE_SIZE]; // last-2 debug msg #ifndef __cplusplus #ifdef __GNUC__ // doing the debug macro with a dummy sprintf allows gcc to check the format string -//#define rig_debug(debug_level,fmt,...) { char xxxbuf[16384]="";snprintf(xxxbuf,sizeof(xxxbuf),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } -#define rig_debug(debug_level,fmt,...) do { strcpy(debugmsgsave2, debugmsgsave);snprintf(debugmsgsave,sizeof(debugmsgsave),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } while(0); +#define rig_debug(debug_level,fmt,...) do { strcpy(debugmsgsave3, debugmsgsave2);strcpy(debugmsgsave2, debugmsgsave);snprintf(debugmsgsave,sizeof(debugmsgsave),fmt,__VA_ARGS__);rig_debug(debug_level,fmt,##__VA_ARGS__); } while(0); #endif #endif extern HAMLIB_EXPORT(void) diff --git a/src/rig.c b/src/rig.c index 2e48d4239..0a807bd8b 100644 --- a/src/rig.c +++ b/src/rig.c @@ -293,6 +293,7 @@ int foreach_opened_rig(int (*cfunc)(RIG *, rig_ptr_t), rig_ptr_t data) */ char debugmsgsave[DEBUGMSGSAVE_SIZE] = "No message"; char debugmsgsave2[DEBUGMSGSAVE_SIZE] = "No message"; +char debugmsgsave3[DEBUGMSGSAVE_SIZE] = "No message"; const char *HAMLIB_API rigerror(int errnum) { @@ -310,8 +311,8 @@ const char *HAMLIB_API rigerror(int errnum) if (*p == '\n') { *p = 0; } - snprintf(msg, sizeof(msg), "%.80s\n%.15000s%.15000s", rigerror_table[errnum], - debugmsgsave2, debugmsgsave); + snprintf(msg, sizeof(msg), "%.80s\n%.15000s%.15000s%.15000s", rigerror_table[errnum], + debugmsgsave3,debugmsgsave2, debugmsgsave); return msg; }