diff options
author | Björn Gustavsson <[email protected]> | 2017-10-31 08:54:41 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2017-11-01 07:39:21 +0100 |
commit | 6b5efa639ae8723745f860b793e74910c8d6798b (patch) | |
tree | 736c871345baa10280c55736513d4e5fb70c0713 /erts/emulator/beam/io.c | |
parent | d998d08c964804d9facd7b05c8429fcb8fab7f59 (diff) | |
download | otp-6b5efa639ae8723745f860b793e74910c8d6798b.tar.gz otp-6b5efa639ae8723745f860b793e74910c8d6798b.tar.bz2 otp-6b5efa639ae8723745f860b793e74910c8d6798b.zip |
beam_makeops: Strengthen the checking of transformations
Any type that is a lower-case letter is allowed in a transformation,
even though some of them don't make sense, could cause compilation
errors when building the emulator, or crash at runtime. For example,
the type 'z' is emitted by the compiler, but eaten by the loader
before the transform engine can see it. Another example is the 'q'
type, which would crash the emulator if it was used on the right
side of a transformation rule.
In beam_makeops, define explicitly which types that are allowed in
patterns (on the left side) and in construction (on the right side).
Using that information, check the transformation rules thoroughly and
reject operands that don't make sense.
While we are it, also correct some misleading comments.
Diffstat (limited to 'erts/emulator/beam/io.c')
0 files changed, 0 insertions, 0 deletions