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
These four keywords are supposed to have only ENABLE or DISABLE
as their value:
EXPORT_XSUB_SYMBOLS:
SCOPE:
VERSIONCHECK:
PROTOTYPES:
It turns out that the XS parser is very lax and allows all sorts of
rubbish as the keyword's value. For example all these are valid, and
the first of them was originally interpreted as *DISABLE*, due to
case-insensitive validation, but case-sensitive value interpretation:
KEYWORD: Enable
KEYWORD: ENABLE;
KEYWORD: ENABLE # comment
KEYWORD: ENABLE the quick brown fox
An earlier commit in this branch, in the course of refactoring, silently
made the value matching to be case insensitive for *all* keywords
(originally it was only CI for SCOPE).
So originally,
PROTOTYPES: Enable
actually disabled prototypes; now it enables them. This commit and the
next will restore the original behaviour and/or make things stricter.
This commit makes all such keywords stricter, apart from PROTOTYPES,
which is much more widely used (often incorrectly) and will require more
careful backwards-compatibility handling. It's behaviour is left
untouched by this commit; the next commit will update it.
For the first three keywords, this commit makes the only acceptable
values to match be /^(ENABLE|DISABLE)\s*$/.
0 commit comments