Ignore:
Timestamp:
Feb 8, 2010, 3:04:34 PM (15 years ago)
Author:
[email protected]
Message:

Switch some more StringBuilder/jsNontrivialString code to use
JSStringBuilder/jsMakeNontrivialString - these methods will
throw an exception if we hit out-of-memory, rather than just
CRASHing.

Reviewed by Geoff Garen.

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::encode):
(JSC::decode):
(JSC::globalFuncEscape):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp

    r52076 r54513  
    3131#include "JSGlobalObject.h"
    3232#include "JSString.h"
     33#include "JSStringBuilder.h"
    3334#include "Lexer.h"
    3435#include "LiteralParser.h"
    3536#include "Nodes.h"
    3637#include "Parser.h"
    37 #include "StringBuilder.h"
    3838#include "StringExtras.h"
    3939#include "dtoa.h"
     
    5858        return throwError(exec, URIError, "String contained an illegal UTF-16 sequence.");
    5959
    60     StringBuilder builder;
     60    JSStringBuilder builder;
    6161    const char* p = cstr.c_str();
    6262    for (size_t k = 0; k < cstr.size(); k++, p++) {
     
    7070        }
    7171    }
    72     return jsString(exec, builder.release());
     72    return builder.releaseJSString(exec);
    7373}
    7474
    7575static JSValue decode(ExecState* exec, const ArgList& args, const char* doNotUnescape, bool strict)
    7676{
    77     StringBuilder builder;
     77    JSStringBuilder builder;
    7878    UString str = args.at(0).toString(exec);
    7979    int k = 0;
     
    136136        builder.append(c);
    137137    }
    138     return jsString(exec, builder.release());
     138    return builder.releaseJSString(exec);
    139139}
    140140
     
    379379        "*+-./@_";
    380380
    381     StringBuilder builder;
    382     UString s;
     381    JSStringBuilder builder;
    383382    UString str = args.at(0).toString(exec);
    384383    const UChar* c = str.data();
     
    388387            char tmp[7];
    389388            sprintf(tmp, "%%u%04X", u);
    390             s = UString(tmp);
     389            builder.append((const char*)tmp);
    391390        } else if (u != 0 && strchr(do_not_escape, static_cast<char>(u)))
    392             s = UString(c, 1);
     391            builder.append(c, 1);
    393392        else {
    394393            char tmp[4];
    395394            sprintf(tmp, "%%%02X", u);
    396             s = UString(tmp);
    397         }
    398         builder.append(s);
    399     }
    400 
    401     return jsString(exec, builder.release());
     395            builder.append((const char*)tmp);
     396        }
     397    }
     398
     399    return builder.releaseJSString(exec);
    402400}
    403401
Note: See TracChangeset for help on using the changeset viewer.