@@ -2609,6 +2609,33 @@ void ClearFatalExceptionHandlers(Environment* env) {
26092609 Undefined (env->isolate ())).FromJust ();
26102610}
26112611
2612+ // Call process.emitWarning(str), fmt is a snprintf() format string
2613+ void ProcessEmitWarning (Environment* env, const char * fmt, ...) {
2614+ char warning[1024 ];
2615+ va_list ap;
2616+
2617+ va_start (ap, fmt);
2618+ vsnprintf (warning, sizeof (warning), fmt, ap);
2619+ va_end (ap);
2620+
2621+ HandleScope handle_scope (env->isolate ());
2622+ Context::Scope context_scope (env->context ());
2623+
2624+ Local<Object> process = env->process_object ();
2625+ MaybeLocal<Value> emit_warning = process->Get (env->context (),
2626+ FIXED_ONE_BYTE_STRING (env->isolate (), " emitWarning" ));
2627+ Local<Value> arg = node::OneByteString (env->isolate (), warning);
2628+
2629+ Local<Value> f;
2630+
2631+ if (!emit_warning.ToLocal (&f)) return ;
2632+ if (!f->IsFunction ()) return ;
2633+
2634+ // MakeCallback() unneeded, because emitWarning is internal code, it calls
2635+ // process.emit('warning', ..), but does so on the nextTick.
2636+ f.As <v8::Function>()->Call (process, 1 , &arg);
2637+ }
2638+
26122639
26132640static void Binding (const FunctionCallbackInfo<Value>& args) {
26142641 Environment* env = Environment::GetCurrent (args);
0 commit comments