view src/osdef1.h.in @ 34389:8b0e390b61fe v9.1.0121

patch 9.1.0121: Infinite loop or signed overflow with 'smoothscroll' Commit: https://github.com/vim/vim/commit/02fcae02a926e4e8379d77fb716da4202029882d Author: Sean Dewar <6256228+seandewar@users.noreply.github.com> Date: Wed Feb 21 19:40:44 2024 +0100 patch 9.1.0121: Infinite loop or signed overflow with 'smoothscroll' Problem: infinite loop in win_update with 'smoothscroll' set when window width is equal to textoff, or signed integer overflow if smaller. Solution: don't revalidate wp->w_skipcol in that case, as no buffer text is being shown. (Sean Dewar) Don't instead reset w_skipcol; that would lose the scroll position within the line, which may be undesirable if the window is made wider later. Also include changes from the splitmove PR #14042 that I (in my infinite Git wisdom) forgot to commit. This includes a change to Test_window_split_no_room to ensure it doesn't fail for some screen sizes. Move Test_smoothscroll_in_zero_width_window to test_scroll_opt.vim, as that file feels more appropriate. closes: #14068 Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Wed, 21 Feb 2024 19:45:06 +0100
parents 9781c150eddd
children
line wrap: on
line source

/* autoconf cannot fiddle out declarations. Use our homebrewn tools. (jw) */
/*
 * Declarations that may cause conflicts belong here so that osdef.sh
 * can clean out the forest. Everything else belongs in os_unix.h
 *
 * How this works:
 * - This file contains all unix prototypes that Vim might need.
 * - The shell script osdef.sh is executed at compile time to remove all the
 *   prototypes that are in an include file. This results in osdef.h.
 * - osdef.h is included in vim.h.
 *
 * sed cannot always handle so many commands, this is file 1 of 2
 */

extern int	printf(char *, ...);
extern int	fprintf(FILE *, char *, ...);
extern int	sprintf(char *, char *, ...);
extern int	sscanf(char *, char *, ...);
#ifndef fopen	/* could be redefined to fopen64() */
extern FILE	*fopen(const char *, const char *);
#endif
extern int	fclose(FILE *);
extern int	fseek(FILE *, long, int);
#ifdef HAVE_FSEEKO
extern int	fseeko(FILE *, off_t, int);
#endif
extern long	ftell(FILE *);
#ifdef HAVE_FSEEKO
extern off_t	ftello(FILE *);
#endif
extern void	rewind(FILE *);
extern int	fread(char *, int, int, FILE *);
extern int	fwrite(char *, int, int, FILE *);
extern int	fputs(char *, FILE *);
#ifndef ferror	/* let me say it again: "macros should never have prototypes" */
extern int	ferror(FILE *);
#endif
extern int	fflush(FILE *);
#if defined(sun) || defined(_SEQUENT_)
/* used inside of stdio macros getc(), puts(), putchar()... */
extern int	_flsbuf(int, FILE *);
extern int	_filbuf(FILE *);
#endif

#if !defined(HAVE_SELECT)
struct pollfd;			/* for poll() */
extern int	poll(struct pollfd *, long, int);
#endif

#ifdef HAVE_MEMSET
extern void	*memset(void *, int, size_t);
#endif
extern int	memcmp(const void *, const void *, size_t);
#ifdef HAVE_STRPBRK
extern char	*strpbrk(const char *, const char *);
#endif
#ifdef USEBCOPY
extern void	bcopy(char *, char *, int);
#else
# ifdef USEMEMCPY
extern void	memcpy(char *, char *, int);
# else
#  ifdef USEMEMMOVE
extern void	memmove(char *, char *, int);
#  endif
# endif
#endif
#if !defined(__BIONIC__) && !defined(__HAIKU__)  // Android's libc #defines bzero to memset.
// used inside of FD_ZERO macro
extern void	bzero(void *, size_t);
#endif
#ifdef HAVE_SETSID
extern pid_t	setsid(void);
#endif
#ifdef HAVE_SETPGID
extern int	setpgid(pid_t, pid_t);
#endif
#ifdef HAVE_STRTOL
extern int	strtol(char *, char **, int);
#endif
#ifdef HAVE_STRFTIME
extern size_t	strftime(char *, size_t, char *, struct tm *);
#endif
#ifdef HAVE_STRCASECMP
extern int	strcasecmp(char *, char *);
#endif
#ifdef HAVE_STRNCASECMP
extern int	strncasecmp(char *, char *, size_t);
#endif
#ifndef strdup
extern char	*strdup(const char *);
#endif
extern int	atoi(char *);
extern int	atol(char *);

#ifndef USE_SYSTEM
extern int	fork(void);
# ifndef __TANDEM
extern int	execvp(const char *, const char **);
# endif
extern int	wait(int *); /* will this break things ...? */
extern int	waitpid(pid_t, int *, int);
#endif

extern int	toupper(int);
extern int	tolower(int);

extern void (*signal(int, void (*func) SIGPROTOARG)) SIGPROTOARG;
#ifdef HAVE_SIGSET
extern void (*sigset(int, void (*func) SIGPROTOARG)) SIGPROTOARG;
#endif

#if defined(HAVE_SETJMP_H)
# ifdef HAVE_SIGSETJMP
extern int	sigsetjmp(sigjmp_buf, int);
extern void	siglongjmp(sigjmp_buf, int);
# else
extern int	setjmp(jmp_buf);
extern void	longjmp(jmp_buf, int);
# endif
#endif

extern int	kill(int, int);

#ifndef __TANDEM
extern int	access(char *, int);
#endif
extern int	fsync(int);
extern int	fchown(int, int, int);
#if defined(HAVE_GETCWD) && !defined(sun) && !defined(__TANDEM)
extern char	*getcwd(char *, int);
#else
extern char	*getwd(char *);
#endif
#ifndef __alpha	/* suggested by Campbell */
extern int	ioctl(int, int, ...);
#endif
extern int	chmod(const char *, mode_t);