ncurses 5.6 - patch 20070612
[ncurses.git] / ncurses / tty / hashmap.c
index ba53786a53499af351fd72c28f5e69ef7dd49743..3426ee3272448d705e708b002203a5fa56426926 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc.                   *
+ * Copyright (c) 1998-2006,2007 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            *
@@ -70,7 +70,7 @@ AUTHOR
 #include <curses.priv.h>
 #include <term.h>              /* for back_color_erase */
 
-MODULE_ID("$Id: hashmap.c,v 1.46 2002/09/07 18:13:15 tom Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.52 2007/05/05 21:50:48 tom Exp $")
 
 #ifdef HASHDEBUG
 
@@ -87,9 +87,11 @@ static chtype oldtext[MAXLINES][TEXTWIDTH], newtext[MAXLINES][TEXTWIDTH];
 # define NEWTEXT(m)    newtext[m]
 # define PENDING(n)     1
 
+extern NCURSES_EXPORT_VAR(unsigned)     _nc_tracing;
+
 #else /* !HASHDEBUG */
 
-# define OLDNUM(n)     _nc_oldnums[n]
+# define OLDNUM(n)     SP->_oldnum_list[n]
 # define OLDTEXT(n)    curscr->_line[n].text
 # define NEWTEXT(m)    newscr->_line[m].text
 # define TEXTWIDTH     (curscr->_maxx+1)
@@ -108,7 +110,9 @@ static chtype oldtext[MAXLINES][TEXTWIDTH], newtext[MAXLINES][TEXTWIDTH];
 #define HASH_VAL(ch) (ch)
 #endif
 
-static inline unsigned long
+static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
+
+static NCURSES_INLINE unsigned long
 hash(NCURSES_CH_T * text)
 {
     int i;
@@ -140,10 +144,10 @@ update_cost_from_blank(NCURSES_CH_T * to)
 {
     int cost = 0;
     int i;
-    NCURSES_CH_T blank = NewChar2(BLANK_TEXT, BLANK_ATTR);
+    NCURSES_CH_T blank = blankchar;
 
     if (back_color_erase)
-       AddAttr(blank, (AttrOf(stdscr->_nc_bkgd) & A_COLOR));
+       SetPair(blank, GetPair(stdscr->_nc_bkgd));
 
     for (i = TEXTWIDTH; i > 0; i--)
        if (!(CharEq(blank, *to++)))
@@ -156,7 +160,7 @@ update_cost_from_blank(NCURSES_CH_T * to)
  * Returns true when moving line 'from' to line 'to' seems to be cost
  * effective. 'blank' indicates whether the line 'to' would become blank.
  */
-static inline bool
+static NCURSES_INLINE bool
 cost_effective(const int from, const int to, const bool blank)
 {
     int new_from;
@@ -444,7 +448,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
     char line[BUFSIZ], *st;
     int n;
 
-    SP = typeCalloc(SCREEN, 1);
+    if (!_nc_alloc_screen())
+       return EXIT_FAILURE;
+
     for (n = 0; n < screen_lines; n++) {
        reallines[n] = n;
        oldnums[n] = _NEWINDEX;