You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vyper Version (output of vyper --version OR linkable commit hash vyperlang/vyper@): b43ffac
Issue Description
Multiple evaluations of the target of byte and dynamic array assignments
have been described in issue 3514. However, this
issue was incomplete since it would only show the case where the complex
expression being evaluated twice is caught by the compiler's "non-unique
symbol" sanity check. However, it is possible to have a complex
expression evaluated twice without the compiler crashing by using
builtins like raw_call or the create_ class or .pop() on a
non-storage array.
Note that this issue has been partially mitigated by 3835 given that
builtins like raw_call and the create_ class are now emitting unique
symbols, however, this is not yet the case for .pop() when the array
is not in storage.
POC
The following code will compile successfully, and x.pop() will be
performed twice:
Version Information
vyper --version
OR linkable commit hash vyperlang/vyper@): b43ffacIssue Description
Multiple evaluations of the target of byte and dynamic array assignments
have been described in issue
3514. However, this
issue was incomplete since it would only show the case where the complex
expression being evaluated twice is caught by the compiler's "non-unique
symbol" sanity check. However, it is possible to have a complex
expression evaluated twice without the compiler crashing by using
builtins like
raw_call
or thecreate_
class or.pop()
on anon-storage array.
Note that this issue has been partially mitigated by
3835 given that
builtins like
raw_call
and thecreate_
class are now emitting uniquesymbols, however, this is not yet the case for
.pop()
when the arrayis not in storage.
POC
The following code will compile successfully, and
x.pop()
will beperformed twice:
The text was updated successfully, but these errors were encountered: