]> git.kaiwu.me - njs.git/commitdiff
Initialize global variables in njs virtual machines.
authorRoman Arutyunyan <arut@nginx.com>
Fri, 27 Jan 2017 13:45:34 +0000 (16:45 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Fri, 27 Jan 2017 13:45:34 +0000 (16:45 +0300)
Previously, global variables in njs code remained uninitialized even if an
initializer existed in njs code.  To fix this, njs_vm_run() function is called
right after a virtual machine is cloned.  This call initializes global
variables.

nginx/ngx_http_js_module.c
nginx/ngx_stream_js_module.c

index 104ca71f8fe65c5709d177b8b2e8541ba6b98494..b2e844810f5a9c3c0a1c6ffe851ec347dbd8b315 100644 (file)
@@ -573,6 +573,10 @@ ngx_http_js_init_vm(ngx_http_request_t *r)
         return NGX_ERROR;
     }
 
+    if (njs_vm_run(ctx->vm) != NJS_OK) {
+        return NGX_ERROR;
+    }
+
     ctx->args = &jlcf->args[0];
 
     return NGX_OK;
index 43fb84dfcc14021df259c2ba6ec085d31fc4df2e..13597b18ced5bdcb045cb9eaa9527052898c9343 100644 (file)
@@ -668,6 +668,10 @@ ngx_stream_js_init_vm(ngx_stream_session_t *s)
         return NGX_ERROR;
     }
 
+    if (njs_vm_run(ctx->vm) != NJS_OK) {
+        return NGX_ERROR;
+    }
+
     ctx->arg = &jscf->arg;
 
     return NGX_OK;