/****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2015 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.49 2012/02/22 22:40:24 tom Exp $")
+MODULE_ID("$Id: hardscroll.c,v 1.52 2015/07/25 20:13:07 tom Exp $")
#if defined(SCROLLDEBUG) || defined(HASHDEBUG)
#if !defined(SCROLLDEBUG) && !defined(HASHDEBUG)
#if USE_HASHMAP
/* get enough storage */
- if (OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM)) {
+ assert(OLDNUM_SIZE(SP_PARM) >= 0);
+ assert(screen_lines(SP_PARM) > 0);
+ if ((oldnums(SP_PARM) == 0)
+ || (OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM))) {
+ int need_lines = ((OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM))
+ ? screen_lines(SP_PARM)
+ : OLDNUM_SIZE(SP_PARM));
int *new_oldnums = typeRealloc(int,
- (size_t) screen_lines(SP_PARM),
+ (size_t) need_lines,
oldnums(SP_PARM));
if (!new_oldnums)
return;
oldnums(SP_PARM) = new_oldnums;
- OLDNUM_SIZE(SP_PARM) = screen_lines(SP_PARM);
+ OLDNUM_SIZE(SP_PARM) = need_lines;
}
/* calculate the indices */
NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_ARG);
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) {
for (;;) {
int n;
- for (n = 0; n < screen_lines; n++)
+ for (n = 0; n < screen_lines(sp); n++)
oldnums[n] = _NEWINDEX;
/* grab the test vector */