|
162 | 162 | } else {
|
163 | 163 | while (NZ(n = hashes[hash])) {
|
164 | 164 | val = BLK_SKIP(series, (n-1) * wide);
|
165 |
| - if (VAL_TYPE(val) == VAL_TYPE(key) && 0 == Cmp_Value(key, val, !cased)) return hash; |
| 165 | + if (VAL_TYPE(val) == VAL_TYPE(key) && 0 == Cmp_Value(key, val, cased)) return hash; |
166 | 166 | hash += skip;
|
167 | 167 | if (hash >= len) hash -= len;
|
168 | 168 | }
|
|
199 | 199 |
|
200 | 200 | val = BLK_HEAD(series);
|
201 | 201 | for (n = 0; n < series->tail; n += 2, val += 2) {
|
202 |
| - key = Find_Key(series, series->series, val, 2, 0, 0); |
| 202 | + key = Find_Key(series, series->series, val, 2, TRUE, 0); |
203 | 203 | hashes[key] = n/2+1;
|
204 | 204 | }
|
205 | 205 | }
|
206 | 206 |
|
207 | 207 |
|
208 | 208 | /***********************************************************************
|
209 | 209 | **
|
210 |
| -*/ static REBCNT Find_Entry(REBSER *series, REBVAL *key, REBVAL *val) |
| 210 | +*/ static REBCNT Find_Entry(REBSER *series, REBVAL *key, REBVAL *val, REBOOL cased) |
211 | 211 | /*
|
212 | 212 | ** Try to find the entry in the map. If not found
|
213 | 213 | ** and val is SET, create the entry and store the key and
|
|
231 | 231 | Rehash_Hash(series);
|
232 | 232 | }
|
233 | 233 |
|
234 |
| - hash = Find_Key(series, hser, key, 2, 0, 0); |
| 234 | + hash = Find_Key(series, hser, key, 2, cased, 0); |
235 | 235 | hashes = (REBCNT*)hser->data;
|
236 | 236 | n = hashes[hash];
|
237 | 237 |
|
|
313 | 313 | !IS_INTEGER(pvs->select) && !IS_CHAR(pvs->select))
|
314 | 314 | return PE_BAD_SELECT;
|
315 | 315 |
|
316 |
| - n = Find_Entry(VAL_SERIES(data), pvs->select, val); |
| 316 | + n = Find_Entry(VAL_SERIES(data), pvs->select, val, FALSE); |
317 | 317 |
|
318 | 318 | if (!n) return PE_NONE;
|
319 | 319 |
|
|
333 | 333 |
|
334 | 334 | val = VAL_BLK_DATA(arg);
|
335 | 335 | for (n = 0; n < len && NOT_END(val) && NOT_END(val+1); val += 2, n += 2) {
|
336 |
| - Find_Entry(ser, val, val+1); |
| 336 | + Find_Entry(ser, val, val+1, TRUE); |
337 | 337 | }
|
338 | 338 | }
|
339 | 339 |
|
|
488 | 488 |
|
489 | 489 | case A_PICK: // same as SELECT for MAP! datatype
|
490 | 490 | case A_SELECT:
|
491 |
| - n = Find_Entry(series, arg, 0); |
| 491 | + n = Find_Entry(series, arg, 0, Find_Refines(ds, AM_SELECT_CASE) ? AM_FIND_CASE : 0); |
492 | 492 | if (!n) return R_NONE;
|
493 | 493 | *D_RET = *VAL_BLK_SKIP(val, ((n-1)*2)+1);
|
494 | 494 | break;
|
|
505 | 505 | break;
|
506 | 506 |
|
507 | 507 | case A_PUT:
|
508 |
| - Find_Entry(series, arg, D_ARG(3)); |
| 508 | + Find_Entry(series, arg, D_ARG(3), Find_Refines(ds, AM_PUT_CASE) ? AM_FIND_CASE : 0); |
509 | 509 | return R_ARG3;
|
510 | 510 |
|
511 | 511 | case A_POKE: // CHECK all pokes!!! to be sure they check args now !!!
|
512 |
| - Find_Entry(series, arg, D_ARG(3)); |
| 512 | + Find_Entry(series, arg, D_ARG(3), FALSE); |
513 | 513 | *D_RET = *D_ARG(3);
|
514 | 514 | break;
|
515 | 515 |
|
|
0 commit comments