luci-base: luci.js: properly skip comments when finding require tokens
authorJo-Philipp Wich <jo@mein.io>
Fri, 29 May 2020 07:56:06 +0000 (09:56 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 29 May 2020 07:57:29 +0000 (09:57 +0200)
Fixes: #4020, #4022, #4111
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
modules/luci-base/htdocs/luci-static/resources/luci.js

index 4b6894c080f1f1ed41fc74b3463d4af431f93209..83c2807d77250212377abd76d95b38c078b7687f 100644 (file)
                                    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;
                                        }
                                                off = i + 1;
                                                quote = chr;
                                        }
+
+                                       prev = chr;
                                }
 
                                /* load dependencies and instantiate class */