When the underlying value of an interface does not fit in a pointer, a pointer to the value was correctly inserted in the heap. However, the receiving method still assumed it got the underlying value instead of a pointer to it leading to a crash. This commit inserts wrapper functions for method calls on interfaces. The bug wasn't obvious as on a 64-bit system, the underlying value was almost always put directly in the interface. However, it led to a crash on the AVR platform where pointer are (usually) just 16 bits making it far more likely that underlying values cannot be directly stored in an interface. |
||
|---|---|---|
| .. | ||
| coroutines.go | ||
| coroutines.txt | ||
| float.go | ||
| float.txt | ||
| interface.go | ||
| interface.txt | ||
| print.go | ||
| print.txt | ||
| structexpand.go | ||
| structexpand.txt | ||