aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/io.c
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-10-31 08:54:41 +0100
committerBjörn Gustavsson <[email protected]>2017-11-01 07:39:21 +0100
commit6b5efa639ae8723745f860b793e74910c8d6798b (patch)
tree736c871345baa10280c55736513d4e5fb70c0713 /erts/emulator/beam/io.c
parentd998d08c964804d9facd7b05c8429fcb8fab7f59 (diff)
downloadotp-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