if (JSREPORT_IS_WARNING(report->flags))
if (!JSREPORT_IS_WARNING(report->flags))
my_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report){    int i, j, k, n;    char *prefix = NULL, *tmp;    const char *ctmp;    if (!report) {        fprintf(gErrFile, "%s\n", message);        return;    }    /* Conditionally ignore reported warnings. */    if (JSREPORT_IS_WARNING(report->flags) && !reportWarnings)        return;    if (report->filename)        prefix = JS_smprintf("%s:", report->filename);    if (report->lineno) {        tmp = prefix;        prefix = JS_smprintf("%s%u: ", tmp ? tmp : "", report->lineno);        JS_free(cx, tmp);    }    if (JSREPORT_IS_WARNING(report->flags)) {        tmp = prefix;        prefix = JS_smprintf("%s%swarning: ",                             tmp ? tmp : "",                             JSREPORT_IS_STRICT(report->flags) ? "strict " : "");        JS_free(cx, tmp);    }    /* embedded newlines -- argh! */    while ((ctmp = strchr(message, '\n')) != 0) {        ctmp++;        if (prefix) fputs(prefix, gErrFile);        fwrite(message, 1, ctmp - message, gErrFile);        message = ctmp;    }    /* If there were no filename or lineno, the prefix might be empty */    if (prefix)        fputs(prefix, gErrFile);    fputs(message, gErrFile);    if (!report->linebuf) {        fputc('\n', gErrFile);        goto out;    }    fprintf(gErrFile, ":\n%s%s\n%s", prefix, report->linebuf, prefix);    n = report->tokenptr - report->linebuf;    for (i = j = 0; i < n; i++) {        if (report->linebuf[i] == '\t') {            for (k = (j + 8) & ~7; j < k; j++) {                fputc('.', gErrFile);            }            continue;        }        fputc('.', gErrFile);        j++;    }    fputs("^\n", gErrFile); out:    if (JSREPORT_IS_WARNING(report->flags))        gExitCode = EXITCODE_RUNTIME_ERROR;    JS_free(cx, prefix);}