view urogue/lint-curses.h @ 298:5a94c9b3181e

UltraRogue: clear the next_obj field when removing items from the floor. The next_obj field is a pointer which the top item in a stack uses to keep a list of the other items. When removing an item from the stack, rem_obj() failed to set next_obj to NULL, which can cause items in monster inventory to point to items earlier in the inventory list. That causes infinite co-recursion when saving or restoring.
author John "Elwin" Edwards
date Thu, 08 Feb 2018 20:54:34 -0500
parents c495a4f288c6
children
line wrap: on
line source

/*
    lint-curses.h

    UltraRogue: The Ultimate Adventure in the Dungeons of Doom
    Copyright (C) 1993, 1995 Herb Chong
    All rights reserved.

    See the file LICENSE.TXT for full copyright and licensing information.
*/


/* Sufficient info to pass lint */
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#define getyx(win,y,x)   y = win->_cury, x = win->_curx
struct screen { int opque_data_type; };
typedef struct { int _cury; int _curx; } WINDOW;
extern WINDOW *stdscr;
extern WINDOW *curscr;
extern int LINES;
extern int COLS;
extern char *unctrl(char c);
extern void initscr(void);
extern int wmove(WINDOW *window, int Line, int Column);
extern int move(int Line, int Column);
extern int addch(char c);
extern int mvaddch(int y, int x, char c);
extern int waddch(WINDOW *window, char c);
extern int mvwaddch(WINDOW *window, int y, int x, char c);
extern int mvwinch(WINDOW *window, int y, int x);
extern int winch(WINDOW *window);
extern int mvinch(int y, int x);
extern int getch(void);
extern int wgetch(WINDOW *window);
extern void clear(void);
extern void wclear(WINDOW *window);
extern void refresh(void);
extern void wrefresh(WINDOW *window);
extern void clearok(WINDOW *window, int flag);
extern void endwin(void);
extern void touchwin(WINDOW *window);
extern void overlay(WINDOW *w1, WINDOW *w2);
extern void wclrtoeol(WINDOW *window);
extern void wprintw(WINDOW *window, const char *fmt, ...);
extern void mvprintw(int line, int col, char *fmt, ...);
extern void mvwprintw(WINDOW *window, int line, int col, char *fmt, ...);
extern int  mvwaddstr(WINDOW *window, int y, int x, const char *str);
extern int  mvaddstr(int y, int x, char *str);
extern int  waddstr(WINDOW *window, char *str);
extern int  addstr(char *str);
extern void standout(void);
extern void wstandout(WINDOW *window);
extern void standend(void);
extern void wstandend(WINDOW *window);
extern void noecho(void);
extern void cbreak(void);
extern void crmode(void);
extern void nonl(void);
extern void nl(void);
extern int wgetch(WINDOW *window);
extern WINDOW *newwin(int lines, int cols, int y, int x);
extern void overwrite(WINDOW *w1, WINDOW *w2);
extern void delwin(WINDOW *window);
extern void printw(char *fmt, ...);