77 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff -rc aterm-2.8-orig/aterm/hash.c aterm-2.8/aterm/hash.c
 | |
| *** aterm-2.8-orig/aterm/hash.c	2008-11-10 13:54:22.000000000 +0100
 | |
| --- aterm-2.8/aterm/hash.c	2009-01-27 18:14:14.000000000 +0100
 | |
| ***************
 | |
| *** 93,146 ****
 | |
|   }
 | |
|   
 | |
|   /*}}}  */
 | |
| - /*{{{  static long calc_long_max() */
 | |
| - static long calc_long_max()
 | |
| - {
 | |
| -   long try_long_max;
 | |
| -   long long_max;
 | |
| -   long delta;
 | |
| - 
 | |
| -   try_long_max = 1;
 | |
| -   do {
 | |
| -     long_max = try_long_max;
 | |
| -     try_long_max = long_max * 2;
 | |
| -   } while (try_long_max > 0);
 | |
| - 
 | |
| -   delta = long_max;
 | |
| -   while (delta > 1) {
 | |
| -     while (long_max + delta < 0) {
 | |
| -       delta /= 2;
 | |
| -     }
 | |
| -     long_max += delta;
 | |
| -   }
 | |
| - 
 | |
| -   return long_max;
 | |
| - 
 | |
| - }
 | |
| - /*}}}  */
 | |
|   /*{{{  static long calculateNewSize(sizeMinus1, nrdel, nrentries) */
 | |
|   
 | |
|   static long calculateNewSize
 | |
|   (long sizeMinus1, long nr_deletions, long nr_entries)
 | |
|   { 
 | |
| - 
 | |
| -   /* Hack: LONG_MAX (limits.h) is often unreliable, we need to find
 | |
| -    * out the maximum possible value of a signed long dynamically.
 | |
| -    */
 | |
| -   static long st_long_max = 0;
 | |
| - 
 | |
| -   /* the resulting length has the form 2^k-1 */
 | |
| - 
 | |
|     if (nr_deletions >= nr_entries/2) { 
 | |
|       return sizeMinus1;
 | |
|     }
 | |
|   
 | |
| !   if (st_long_max == 0) {
 | |
| !     st_long_max = calc_long_max();
 | |
| !   }
 | |
| ! 
 | |
| !   if (sizeMinus1 > st_long_max / 2) {
 | |
| !     return st_long_max-1;
 | |
|     }
 | |
|   
 | |
|     return (2*sizeMinus1)+1;
 | |
| --- 93,109 ----
 | |
|   }
 | |
|   
 | |
|   /*}}}  */
 | |
|   /*{{{  static long calculateNewSize(sizeMinus1, nrdel, nrentries) */
 | |
|   
 | |
|   static long calculateNewSize
 | |
|   (long sizeMinus1, long nr_deletions, long nr_entries)
 | |
|   { 
 | |
|     if (nr_deletions >= nr_entries/2) { 
 | |
|       return sizeMinus1;
 | |
|     }
 | |
|   
 | |
| !   if (sizeMinus1 > LONG_MAX / 2) {
 | |
| !     return LONG_MAX-1;
 | |
|     }
 | |
|   
 | |
|     return (2*sizeMinus1)+1;
 |