Commit 1708134
committed
Fix dereference behavior on mixed operators
Previously, using subscript operator (literally "[]") with arrow
operator (literally "->") or dot operator (literally ".") would cause
incorrect dereference result due to inappropriate delayed dereference
strategy. For example, considering "data->raw[0]", this would evaluate
to "data[0]", same for "data.raw[0]". In this patch, by adding
dereference instruction when encountered subscript operator after
parsed either arrow or dot operator, in other word, after accessed
struct's member, this corrects the final evaluated address.
Close sysprog21#164, close sysprog21#165, close sysprog21#181.1 parent 7a53b43 commit 1708134
3 files changed
+76
-18
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
250 | 250 | | |
251 | 251 | | |
252 | 252 | | |
253 | | - | |
254 | | - | |
255 | | - | |
| 253 | + | |
256 | 254 | | |
257 | 255 | | |
258 | 256 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
750 | 750 | | |
751 | 751 | | |
752 | 752 | | |
753 | | - | |
| 753 | + | |
754 | 754 | | |
755 | 755 | | |
756 | 756 | | |
| |||
805 | 805 | | |
806 | 806 | | |
807 | 807 | | |
808 | | - | |
| 808 | + | |
809 | 809 | | |
810 | 810 | | |
811 | 811 | | |
| |||
825 | 825 | | |
826 | 826 | | |
827 | 827 | | |
828 | | - | |
| 828 | + | |
829 | 829 | | |
830 | 830 | | |
831 | 831 | | |
| |||
962 | 962 | | |
963 | 963 | | |
964 | 964 | | |
965 | | - | |
| 965 | + | |
966 | 966 | | |
967 | 967 | | |
968 | 968 | | |
| |||
1234 | 1234 | | |
1235 | 1235 | | |
1236 | 1236 | | |
1237 | | - | |
| 1237 | + | |
1238 | 1238 | | |
1239 | 1239 | | |
1240 | 1240 | | |
1241 | 1241 | | |
1242 | | - | |
1243 | | - | |
| 1242 | + | |
| 1243 | + | |
1244 | 1244 | | |
1245 | 1245 | | |
1246 | 1246 | | |
| |||
1260 | 1260 | | |
1261 | 1261 | | |
1262 | 1262 | | |
| 1263 | + | |
| 1264 | + | |
| 1265 | + | |
| 1266 | + | |
| 1267 | + | |
| 1268 | + | |
| 1269 | + | |
| 1270 | + | |
| 1271 | + | |
| 1272 | + | |
| 1273 | + | |
| 1274 | + | |
| 1275 | + | |
| 1276 | + | |
| 1277 | + | |
| 1278 | + | |
| 1279 | + | |
1263 | 1280 | | |
1264 | 1281 | | |
1265 | 1282 | | |
| |||
1303 | 1320 | | |
1304 | 1321 | | |
1305 | 1322 | | |
1306 | | - | |
1307 | | - | |
| 1323 | + | |
| 1324 | + | |
1308 | 1325 | | |
1309 | 1326 | | |
1310 | 1327 | | |
| |||
1313 | 1330 | | |
1314 | 1331 | | |
1315 | 1332 | | |
1316 | | - | |
| 1333 | + | |
1317 | 1334 | | |
1318 | 1335 | | |
1319 | 1336 | | |
| |||
1327 | 1344 | | |
1328 | 1345 | | |
1329 | 1346 | | |
1330 | | - | |
| 1347 | + | |
1331 | 1348 | | |
1332 | 1349 | | |
1333 | 1350 | | |
| |||
1337 | 1354 | | |
1338 | 1355 | | |
1339 | 1356 | | |
1340 | | - | |
| 1357 | + | |
1341 | 1358 | | |
1342 | 1359 | | |
1343 | 1360 | | |
| |||
1376 | 1393 | | |
1377 | 1394 | | |
1378 | 1395 | | |
1379 | | - | |
1380 | | - | |
| 1396 | + | |
| 1397 | + | |
1381 | 1398 | | |
1382 | 1399 | | |
1383 | 1400 | | |
| |||
1860 | 1877 | | |
1861 | 1878 | | |
1862 | 1879 | | |
1863 | | - | |
| 1880 | + | |
1864 | 1881 | | |
1865 | 1882 | | |
1866 | 1883 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
433 | 433 | | |
434 | 434 | | |
435 | 435 | | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
436 | 479 | | |
437 | 480 | | |
438 | 481 | | |
| |||
0 commit comments