Commit 1a2a7f1
Core: Dereference a pointer wherever a number is wanted, not only in operands
return p and p + 1 on a map lookup worked, because they go through
get_typed_operand, which loads through the pointer with a null check.
r.val = p, x = p into an integer local, and c_int64(p) (so also
return c_int64(p)) did not: those three sites call eval_expr directly
and handed the pointer to the integer path, failing with i64* vs i64.
deref_to_value is get_typed_operand's pointer fallback as a helper, used
by it and by the three sites, only when the destination is an integer:
a pointer slot still aliases (q = p), and an opaque pointer, which names
no pointee, is left alone. The descriptor takes the map's declared value
ctype, as the operand path does.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>1 parent dc628ee commit 1a2a7f1
3 files changed
Lines changed: 44 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
43 | 48 | | |
44 | 49 | | |
45 | 50 | | |
| |||
147 | 152 | | |
148 | 153 | | |
149 | 154 | | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
150 | 161 | | |
151 | 162 | | |
152 | 163 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
| 23 | + | |
23 | 24 | | |
24 | 25 | | |
25 | 26 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
225 | 247 | | |
226 | 248 | | |
227 | 249 | | |
| |||
270 | 292 | | |
271 | 293 | | |
272 | 294 | | |
273 | | - | |
274 | | - | |
275 | | - | |
| 295 | + | |
| 296 | + | |
276 | 297 | | |
277 | 298 | | |
278 | 299 | | |
| |||
353 | 374 | | |
354 | 375 | | |
355 | 376 | | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
356 | 383 | | |
357 | 384 | | |
358 | 385 | | |
| |||
0 commit comments