Treat textlist item number as int instead of short
cf. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=838952
This commit is contained in:
		| @@ -119,7 +119,8 @@ unshiftHist(Hist *hist, char *ptr) | ||||
| { | ||||
|     HistItem *item; | ||||
|  | ||||
|     if (hist == NULL || hist->list == NULL) | ||||
|     if (hist == NULL || hist->list == NULL || | ||||
| 	hist->list->nitem >= HIST_LIST_MAX) | ||||
| 	return NULL; | ||||
|     item = (HistItem *)newListItem((void *)allocStr(ptr, -1), | ||||
| 				   (ListItem *)hist->list->first, NULL); | ||||
| @@ -137,7 +138,8 @@ pushHist(Hist *hist, char *ptr) | ||||
| { | ||||
|     HistItem *item; | ||||
|  | ||||
|     if (hist == NULL || hist->list == NULL) | ||||
|     if (hist == NULL || hist->list == NULL || | ||||
| 	hist->list->nitem >= HIST_LIST_MAX) | ||||
| 	return NULL; | ||||
|     item = (HistItem *)newListItem((void *)allocStr(ptr, -1), | ||||
| 				   NULL, (ListItem *)hist->list->last); | ||||
| @@ -157,7 +159,8 @@ pushHashHist(Hist *hist, char *ptr) | ||||
| { | ||||
|     HistItem *item; | ||||
|  | ||||
|     if (hist == NULL || hist->list == NULL) | ||||
|     if (hist == NULL || hist->list == NULL || | ||||
| 	hist->list->nitem >= HIST_LIST_MAX) | ||||
| 	return NULL; | ||||
|     item = getHashHist(hist, ptr); | ||||
|     if (item) { | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| #include "textlist.h" | ||||
| #include "hash.h" | ||||
|  | ||||
| #define HIST_LIST_MAX GENERAL_LIST_MAX | ||||
| #define HIST_HASH_SIZE 127 | ||||
|  | ||||
| typedef ListItem HistItem; | ||||
|   | ||||
| @@ -30,7 +30,7 @@ void | ||||
| pushValue(GeneralList *tl, void *s) | ||||
| { | ||||
|     ListItem *it; | ||||
|     if (s == NULL) | ||||
|     if (s == NULL || tl == NULL || tl->nitem >= GENERAL_LIST_MAX) | ||||
| 	return; | ||||
|     it = newListItem(s, NULL, tl->last); | ||||
|     if (tl->first == NULL) { | ||||
| @@ -99,6 +99,9 @@ appendGeneralList(GeneralList *tl, GeneralList *tl2) | ||||
|     if (tl && tl2) { | ||||
| 	if (tl2->first) { | ||||
| 	    if (tl->last) { | ||||
| 		if (tl->nitem + tl2->nitem > GENERAL_LIST_MAX) { | ||||
| 		    return tl; | ||||
| 		} | ||||
| 		tl->last->next = tl2->first; | ||||
| 		tl2->first->prev = tl->last; | ||||
| 		tl->last = tl2->last; | ||||
|   | ||||
							
								
								
									
										10
									
								
								textlist.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								textlist.h
									
									
									
									
									
								
							| @@ -2,6 +2,8 @@ | ||||
| #ifndef TEXTLIST_H | ||||
| #define TEXTLIST_H | ||||
| #include "Str.h" | ||||
| #include <limits.h> | ||||
| #define GENERAL_LIST_MAX (INT_MAX / 32) | ||||
|  | ||||
| /* General doubly linked list */ | ||||
|  | ||||
| @@ -14,7 +16,7 @@ typedef struct _listitem { | ||||
| typedef struct _generallist { | ||||
|     ListItem *first; | ||||
|     ListItem *last; | ||||
|     short nitem; | ||||
|     int nitem; | ||||
| } GeneralList; | ||||
|  | ||||
| extern ListItem *newListItem(void *s, ListItem *n, ListItem *p); | ||||
| @@ -36,7 +38,7 @@ typedef struct _textlistitem { | ||||
| typedef struct _textlist { | ||||
|     TextListItem *first; | ||||
|     TextListItem *last; | ||||
|     short nitem; | ||||
|     int nitem; | ||||
| } TextList; | ||||
|  | ||||
| #define newTextList() ((TextList *)newGeneralList()) | ||||
| @@ -50,7 +52,7 @@ typedef struct _textlist { | ||||
|  | ||||
| typedef struct _TextLine { | ||||
|     Str line; | ||||
|     short pos; | ||||
|     int pos; | ||||
| } TextLine; | ||||
|  | ||||
| typedef struct _textlinelistitem { | ||||
| @@ -62,7 +64,7 @@ typedef struct _textlinelistitem { | ||||
| typedef struct _textlinelist { | ||||
|     TextLineListItem *first; | ||||
|     TextLineListItem *last; | ||||
|     short nitem; | ||||
|     int nitem; | ||||
| } TextLineList; | ||||
|  | ||||
| extern TextLine *newTextLine(Str line, int pos); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user