[Freeswitch-svn] [commit] r12561 - freeswitch/trunk/src/mod/languages/mod_spidermonkey
FreeSWITCH SVN
mrene at freeswitch.org
Wed Mar 11 05:39:37 PDT 2009
Author: mrene
Date: Wed Mar 11 07:39:37 2009
New Revision: 12561
Log:
FSCORE-327
Modified:
freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Wed Mar 11 07:39:37 2009
@@ -1146,8 +1146,21 @@
switch_dtmf_t *dtmf = (switch_dtmf_t *) input;
if (dtmf) {
- if ((Event = new_js_dtmf(dtmf, var_name, cb_state->cx, cb_state->obj))) {
- argv[argc++] = STRING_TO_JSVAL(JS_NewStringCopyZ(cb_state->cx, "dtmf"));
+ JSString *str = NULL;
+ /* FSCORE-327 - If a javascript garbage collection is in progress,
+ JS_NewStringCopyZ returns NULL */
+ int try = 100;
+ while (try-- && !str) {
+ if ((str = JS_NewStringCopyZ(cb_state->cx, "dtmf"))) break;
+ switch_yield(10000);
+ }
+
+ if (!str) {
+ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Javascript memory allocation failed\n");
+ }
+
+ if (str && (Event = new_js_dtmf(dtmf, var_name, cb_state->cx, cb_state->obj))) {
+ argv[argc++] = STRING_TO_JSVAL(str);
argv[argc++] = OBJECT_TO_JSVAL(Event);
} else {
jss->stack_depth--;
More information about the Freeswitch-svn
mailing list