mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-06 03:53:42 +00:00
compiler: fix indices into strings and arrays
This PR fixes two bugs at once:
1. Indices were incorrectly extended to a bigger type. Specifically,
unsigned integers were sign extended and signed integers were zero
extended. This commit swaps them around.
2. The getelementptr instruction was given the raw index, even if it
was a uint8 for example. However, getelementptr assumes the indices
are signed, and therefore an index of uint8(200) was interpreted as
an index of int8(-56).
This commit is contained in:
committed by
Ron Evans
parent
335fb71d2f
commit
c1d697f868
Vendored
+5
@@ -27,3 +27,8 @@ func stringCompareUnequal(s1, s2 string) bool {
|
||||
func stringCompareLarger(s1, s2 string) bool {
|
||||
return s1 > s2
|
||||
}
|
||||
|
||||
func stringLookup(s string, x uint8) byte {
|
||||
// Test that x is correctly extended to an uint before comparison.
|
||||
return s[x]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user