| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.740 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.740 |
| Problem: IOC tool complains about undefined behavior for int. |
| Solution: Change to unsigned int. (Dominique Pelle) |
| Files: src/hashtab.c, src/misc2.c |
| |
| |
| |
| |
| |
| *** 138,144 **** |
| hash_T perturb; |
| hashitem_T *freeitem; |
| hashitem_T *hi; |
| ! int idx; |
| |
| #ifdef HT_DEBUG |
| ++hash_count_lookup; |
| --- 138,144 ---- |
| hash_T perturb; |
| hashitem_T *freeitem; |
| hashitem_T *hi; |
| ! unsigned idx; |
| |
| #ifdef HT_DEBUG |
| ++hash_count_lookup; |
| |
| *** 150,156 **** |
| * - skip over a removed item |
| * - return if the item matches |
| */ |
| ! idx = (int)(hash & ht->ht_mask); |
| hi = &ht->ht_array[idx]; |
| |
| if (hi->hi_key == NULL) |
| --- 150,156 ---- |
| * - skip over a removed item |
| * - return if the item matches |
| */ |
| ! idx = (unsigned)(hash & ht->ht_mask); |
| hi = &ht->ht_array[idx]; |
| |
| if (hi->hi_key == NULL) |
| |
| *** 176,182 **** |
| #ifdef HT_DEBUG |
| ++hash_count_perturb; /* count a "miss" for hashtab lookup */ |
| #endif |
| ! idx = (int)((idx << 2) + idx + perturb + 1); |
| hi = &ht->ht_array[idx & ht->ht_mask]; |
| if (hi->hi_key == NULL) |
| return freeitem == NULL ? hi : freeitem; |
| --- 176,182 ---- |
| #ifdef HT_DEBUG |
| ++hash_count_perturb; /* count a "miss" for hashtab lookup */ |
| #endif |
| ! idx = (unsigned)((idx << 2U) + idx + perturb + 1U); |
| hi = &ht->ht_array[idx & ht->ht_mask]; |
| if (hi->hi_key == NULL) |
| return freeitem == NULL ? hi : freeitem; |
| |
| *** 342,348 **** |
| hashitem_T temparray[HT_INIT_SIZE]; |
| hashitem_T *oldarray, *newarray; |
| hashitem_T *olditem, *newitem; |
| ! int newi; |
| int todo; |
| long_u oldsize, newsize; |
| long_u minsize; |
| --- 342,348 ---- |
| hashitem_T temparray[HT_INIT_SIZE]; |
| hashitem_T *oldarray, *newarray; |
| hashitem_T *olditem, *newitem; |
| ! unsigned newi; |
| int todo; |
| long_u oldsize, newsize; |
| long_u minsize; |
| |
| *** 448,460 **** |
| * the algorithm to find an item in hash_lookup(). But we only |
| * need to search for a NULL key, thus it's simpler. |
| */ |
| ! newi = (int)(olditem->hi_hash & newmask); |
| newitem = &newarray[newi]; |
| |
| if (newitem->hi_key != NULL) |
| for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT) |
| { |
| ! newi = (int)((newi << 2) + newi + perturb + 1); |
| newitem = &newarray[newi & newmask]; |
| if (newitem->hi_key == NULL) |
| break; |
| --- 448,460 ---- |
| * the algorithm to find an item in hash_lookup(). But we only |
| * need to search for a NULL key, thus it's simpler. |
| */ |
| ! newi = (unsigned)(olditem->hi_hash & newmask); |
| newitem = &newarray[newi]; |
| |
| if (newitem->hi_key != NULL) |
| for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT) |
| { |
| ! newi = (unsigned)((newi << 2U) + newi + perturb + 1U); |
| newitem = &newarray[newi & newmask]; |
| if (newitem->hi_key == NULL) |
| break; |
| |
| |
| |
| *** 3860,3866 **** |
| ush temp; \ |
| \ |
| temp = (ush)keys[2] | 2; \ |
| ! t = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff); \ |
| } |
| |
| /* |
| --- 3860,3866 ---- |
| ush temp; \ |
| \ |
| temp = (ush)keys[2] | 2; \ |
| ! t = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); \ |
| } |
| |
| /* |
| |
| *** 4002,4008 **** |
| ush temp; |
| |
| temp = (ush)keys[2] | 2; |
| ! temp = (int)(((unsigned)(temp * (temp ^ 1)) >> 8) & 0xff); |
| UPDATE_KEYS_ZIP(*p ^= temp); |
| } |
| else |
| --- 4002,4008 ---- |
| ush temp; |
| |
| temp = (ush)keys[2] | 2; |
| ! temp = (int)(((unsigned)(temp * (temp ^ 1U)) >> 8) & 0xff); |
| UPDATE_KEYS_ZIP(*p ^= temp); |
| } |
| else |
| |
| |
| |
| *** 727,728 **** |
| --- 727,730 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 740, |
| /**/ |
| |
| -- |
| From "know your smileys": |
| ~#:-( I just washed my hair, and I can't do nuthin' with it. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |