/****************************************************************************
- * Copyright (c) 1998-2012,2015 Free Software Foundation, Inc. *
+ * Copyright 2020,2023 Thomas E. Dickey *
+ * Copyright 1998-2015,2016 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 *
#include <curses.priv.h>
-MODULE_ID("$Id: hardscroll.c,v 1.52 2015/07/25 20:13:07 tom Exp $")
+MODULE_ID("$Id: hardscroll.c,v 1.58 2023/09/09 16:04:08 Nicholas.Marriott Exp $")
#if defined(SCROLLDEBUG) || defined(HASHDEBUG)
int *new_oldnums = typeRealloc(int,
(size_t) need_lines,
oldnums(SP_PARM));
- if (!new_oldnums)
+ if (!new_oldnums) {
+ TR(TRACE_ICALLS, (T_RETURN("")));
return;
+ }
oldnums(SP_PARM) = new_oldnums;
OLDNUM_SIZE(SP_PARM) = need_lines;
}
/* calculate the indices */
NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_ARG);
+ if (SP_PARM->hashtab_len < screen_lines(SP_PARM)) {
+ TR(TRACE_ICALLS, (T_RETURN("")));
+ return;
+ }
#endif
#endif /* !defined(SCROLLDEBUG) && !defined(HASHDEBUG) */
NCURSES_SP_NAME(_nc_linedump) (NCURSES_SP_DCL0)
/* dump the state of the real and virtual oldnum fields */
{
- int n;
- char *buf = 0;
- size_t want = ((size_t) screen_lines(SP_PARM) + 1) * 4;
- (void) SP_PARM;
-
- if ((buf = typeMalloc(char, want)) != 0) {
-
- *buf = '\0';
- for (n = 0; n < screen_lines(SP_PARM); n++)
- _nc_SPRINTF(buf + strlen(buf),
- _nc_SLIMIT(want - strlen(buf))
- " %02d", OLDNUM(SP_PARM, n));
- TR(TRACE_UPDATE | TRACE_MOVE, ("virt %s", buf));
- free(buf);
+ if (USE_TRACEF(TRACE_UPDATE | TRACE_MOVE)) {
+ char *buf = 0;
+ size_t want = ((size_t) screen_lines(SP_PARM) + 1) * 4;
+ (void) SP_PARM;
+
+ if ((buf = typeMalloc(char, want)) != 0) {
+ int n;
+
+ *buf = '\0';
+ for (n = 0; n < screen_lines(SP_PARM); n++) {
+ int number = OLDNUM(SP_PARM, n);
+ if (number >= -99 && number < 999) {
+ _nc_SPRINTF(buf + strlen(buf),
+ _nc_SLIMIT(want - strlen(buf))
+ " %02d", number);
+ } else {
+ _nc_STRCAT(buf, " ??", want - strlen(buf));
+ }
+ }
+ free(buf);
+ }
}
}