luci-base: luci.js: properly skip comments when finding require tokens

Fixes: #4020, #4022, #4111
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 6be8f8dbae)
This commit is contained in:
Jo-Philipp Wich 2020-05-29 09:56:06 +02:00
parent 39d5f2e5a6
commit dd9624d35a

View file

@ -2443,12 +2443,19 @@
args = '';
/* find require statements in source */
for (var i = 0, off = -1, quote = -1, esc = false; i < source.length; i++) {
for (var i = 0, off = -1, prev = -1, quote = -1, comment = -1, esc = false; i < source.length; i++) {
var chr = source.charCodeAt(i);
if (esc) {
esc = false;
}
else if (comment != -1) {
if ((comment == 47 && chr == 10) || (comment == 42 && prev == 42 && chr == 47))
comment = -1;
}
else if ((chr == 42 || chr == 47) && prev == 47) {
comment = chr;
}
else if (chr == 92) {
esc = true;
}
@ -2472,6 +2479,8 @@
off = i + 1;
quote = chr;
}
prev = chr;
}
/* load dependencies and instantiate class */