X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/a621ae76cc8981ecf39b8f992f5dde39a03846f3..c5e3cd6963207eebaeb3ddd81992179cd7da1274:/Execute.cpp
diff --git a/Execute.cpp b/Execute.cpp
index dd25826..ac05c66 100644
--- a/Execute.cpp
+++ b/Execute.cpp
@@ -1,20 +1,20 @@
/* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2012 Jay Freeman (saurik)
+ * Copyright (C) 2009-2013 Jay Freeman (saurik)
*/
-/* GNU Lesser General Public License, Version 3 {{{ */
+/* GNU General Public License, Version 3 {{{ */
/*
- * Cycript is free software: you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the
- * Free Software Foundation, either version 3 of the License, or (at your
- * option) any later version.
+ * Cycript is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
*
- * Cycript is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
- * License for more details.
+ * Cycript is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
*
- * You should have received a copy of the GNU Lesser General Public License
+ * You should have received a copy of the GNU General Public License
* along with Cycript. If not, see .
**/
/* }}} */
@@ -109,22 +109,22 @@ static CYUTF16String CYCastUTF16String(JSStringRef value) {
return CYUTF16String(JSStringGetCharactersPtr(value), JSStringGetLength(value));
}
-CYUTF8String CYPoolUTF8String(apr_pool_t *pool, JSContextRef context, JSStringRef value) {
+CYUTF8String CYPoolUTF8String(CYPool &pool, JSContextRef context, JSStringRef value) {
return CYPoolUTF8String(pool, CYCastUTF16String(value));
}
-const char *CYPoolCString(apr_pool_t *pool, JSContextRef context, JSStringRef value) {
+const char *CYPoolCString(CYPool &pool, JSContextRef context, JSStringRef value) {
CYUTF8String utf8(CYPoolUTF8String(pool, context, value));
_assert(memchr(utf8.data, '\0', utf8.size) == NULL);
return utf8.data;
}
-const char *CYPoolCString(apr_pool_t *pool, JSContextRef context, JSValueRef value) {
+const char *CYPoolCString(CYPool &pool, JSContextRef context, JSValueRef value) {
return JSValueIsNull(context, value) ? NULL : CYPoolCString(pool, context, CYJSString(context, value));
}
/* }}} */
/* Index Offsets {{{ */
-size_t CYGetIndex(apr_pool_t *pool, JSContextRef context, JSStringRef value) {
+size_t CYGetIndex(CYPool &pool, JSContextRef context, JSStringRef value) {
return CYGetIndex(CYPoolUTF8String(pool, context, value));
}
/* }}} */
@@ -154,11 +154,12 @@ static JSStringRef Result_;
void CYFinalize(JSObjectRef object) {
CYData *internal(reinterpret_cast(JSObjectGetPrivate(object)));
+ _assert(internal->count_ != _not(unsigned));
if (--internal->count_ == 0)
delete internal;
}
-void Structor_(apr_pool_t *pool, sig::Type *&type) {
+void Structor_(CYPool &pool, sig::Type *&type) {
if (
type->primitive == sig::pointer_P &&
type->data.data.type != NULL &&
@@ -219,7 +220,7 @@ struct Pointer :
Pointer(void *value, JSContextRef context, JSObjectRef owner, size_t length, sig::Type *type) :
CYOwned(value, context, owner),
- type_(new(pool_) Type_privateData(type)),
+ type_(new(*pool_) Type_privateData(type)),
length_(length)
{
}
@@ -241,7 +242,7 @@ static TypeMap Types_;
JSObjectRef CYMakeStruct(JSContextRef context, void *data, sig::Type *type, ffi_type *ffi, JSObjectRef owner) {
Struct_privateData *internal(new Struct_privateData(context, owner));
- apr_pool_t *pool(internal->pool_);
+ CYPool &pool(*internal->pool_);
Type_privateData *typical(new(pool) Type_privateData(type, ffi));
internal->type_ = typical;
@@ -249,7 +250,7 @@ JSObjectRef CYMakeStruct(JSContextRef context, void *data, sig::Type *type, ffi_
internal->value_ = data;
else {
size_t size(typical->GetFFI()->size);
- void *copy(apr_palloc(internal->pool_, size));
+ void *copy(internal->pool_->malloc(size));
memcpy(copy, data, size);
internal->value_ = copy;
}
@@ -335,13 +336,13 @@ static JSValueRef System_print(JSContextRef context, JSObjectRef object, JSObjec
}
return CYJSUndefined(context);
-} CYCatch }
+} CYCatch(NULL) }
static size_t Nonce_(0);
static JSValueRef $cyq(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
CYPool pool;
- const char *name(apr_psprintf(pool, "%s%"APR_SIZE_T_FMT"", CYPoolCString(pool, context, arguments[0]), Nonce_++));
+ const char *name(pool.strcat(CYPoolCString(pool, context, arguments[0]), pool.itoa(Nonce_++), NULL));
return CYCastJSValue(context, name);
}
@@ -350,7 +351,7 @@ static JSValueRef Cycript_gc_callAsFunction(JSContextRef context, JSObjectRef ob
return CYJSUndefined(context);
}
-const char *CYPoolCCYON(apr_pool_t *pool, JSContextRef context, JSValueRef value, JSValueRef *exception) { CYTry {
+const char *CYPoolCCYON(CYPool &pool, JSContextRef context, JSValueRef value, JSValueRef *exception) { CYTry {
switch (JSType type = JSValueGetType(context, value)) {
case kJSTypeUndefined:
return "undefined";
@@ -363,7 +364,7 @@ const char *CYPoolCCYON(apr_pool_t *pool, JSContextRef context, JSValueRef value
std::ostringstream str;
CYNumerify(str, CYCastDouble(context, value));
std::string value(str.str());
- return apr_pstrmemdup(pool, value.c_str(), value.size());
+ return pool.strmemdup(value.c_str(), value.size());
} break;
case kJSTypeString: {
@@ -371,7 +372,7 @@ const char *CYPoolCCYON(apr_pool_t *pool, JSContextRef context, JSValueRef value
CYUTF8String string(CYPoolUTF8String(pool, context, CYJSString(context, value)));
CYStringify(str, string.data, string.size);
std::string value(str.str());
- return apr_pstrmemdup(pool, value.c_str(), value.size());
+ return pool.strmemdup(value.c_str(), value.size());
} break;
case kJSTypeObject:
@@ -379,16 +380,16 @@ const char *CYPoolCCYON(apr_pool_t *pool, JSContextRef context, JSValueRef value
default:
throw CYJSError(context, "JSValueGetType() == 0x%x", type);
}
-} CYCatch }
+} CYCatch(NULL) }
-const char *CYPoolCCYON(apr_pool_t *pool, JSContextRef context, JSValueRef value) {
+const char *CYPoolCCYON(CYPool &pool, JSContextRef context, JSValueRef value) {
JSValueRef exception(NULL);
const char *cyon(CYPoolCCYON(pool, context, value, &exception));
CYThrow(context, exception);
return cyon;
}
-const char *CYPoolCCYON(apr_pool_t *pool, JSContextRef context, JSObjectRef object) {
+const char *CYPoolCCYON(CYPool &pool, JSContextRef context, JSObjectRef object) {
JSValueRef toCYON(CYGetProperty(context, object, toCYON_s));
if (CYIsCallable(context, toCYON)) {
JSValueRef value(CYCallAsFunction(context, (JSObjectRef) toCYON, object, 0, NULL));
@@ -447,7 +448,7 @@ const char *CYPoolCCYON(apr_pool_t *pool, JSContextRef context, JSObjectRef obje
JSPropertyNameArrayRelease(names);
std::string string(str.str());
- return apr_pstrmemdup(pool, string.c_str(), string.size());
+ return pool.strmemdup(string.c_str(), string.size());
}
static JSValueRef Array_callAsFunction_toCYON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
@@ -479,7 +480,7 @@ static JSValueRef Array_callAsFunction_toCYON(JSContextRef context, JSObjectRef
std::string value(str.str());
return CYCastJSValue(context, CYJSString(CYUTF8String(value.c_str(), value.size())));
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef String_callAsFunction_toCYON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
CYPool pool;
@@ -490,7 +491,7 @@ static JSValueRef String_callAsFunction_toCYON(JSContextRef context, JSObjectRef
std::string value(str.str());
return CYCastJSValue(context, CYJSString(CYUTF8String(value.c_str(), value.size())));
-} CYCatch }
+} CYCatch(NULL) }
JSObjectRef CYMakePointer(JSContextRef context, void *pointer, size_t length, sig::Type *type, ffi_type *ffi, JSObjectRef owner) {
Pointer *internal(new Pointer(pointer, context, owner, length, type));
@@ -518,7 +519,7 @@ static JSObjectRef CYMakeFunctor(JSContextRef context, const char *symbol, const
return JSObjectMake(context, Functor_, internal);
}
-static bool CYGetOffset(apr_pool_t *pool, JSContextRef context, JSStringRef value, ssize_t &index) {
+static bool CYGetOffset(CYPool &pool, JSContextRef context, JSStringRef value, ssize_t &index) {
return CYGetOffset(CYPoolCString(pool, context, value), index);
}
@@ -546,7 +547,7 @@ void *CYCastPointer_(JSContextRef context, JSValueRef value) {
}
}
-void CYPoolFFI(apr_pool_t *pool, JSContextRef context, sig::Type *type, ffi_type *ffi, void *data, JSValueRef value) {
+void CYPoolFFI(CYPool *pool, JSContextRef context, sig::Type *type, ffi_type *ffi, void *data, JSValueRef value) {
switch (type->primitive) {
case sig::boolean_P:
*reinterpret_cast(data) = JSValueToBoolean(context, value);
@@ -596,7 +597,8 @@ void CYPoolFFI(apr_pool_t *pool, JSContextRef context, sig::Type *type, ffi_type
break;
case sig::string_P:
- *reinterpret_cast(data) = CYPoolCString(pool, context, value);
+ _assert(pool != NULL);
+ *reinterpret_cast(data) = CYPoolCString(*pool, context, value);
break;
case sig::struct_P: {
@@ -774,7 +776,7 @@ static JSObjectRef CYMakeFunctor(JSContextRef context, JSValueRef value, const c
}
}
-static bool Index_(apr_pool_t *pool, JSContextRef context, Struct_privateData *internal, JSStringRef property, ssize_t &index, uint8_t *&base) {
+static bool Index_(CYPool &pool, JSContextRef context, Struct_privateData *internal, JSStringRef property, ssize_t &index, uint8_t *&base) {
Type_privateData *typical(internal->type_);
sig::Type *type(typical->type_);
if (type == NULL)
@@ -842,7 +844,7 @@ static JSValueRef Pointer_getProperty(JSContextRef context, JSObjectRef object,
JSObjectRef owner(internal->GetOwner() ?: object);
return CYFromFFI(context, typical->type_, ffi, base, false, owner);
-} CYCatch }
+} CYCatch(NULL) }
static bool Pointer_setProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef value, JSValueRef *exception) { CYTry {
CYPool pool;
@@ -850,13 +852,13 @@ static bool Pointer_setProperty(JSContextRef context, JSObjectRef object, JSStri
Type_privateData *typical(internal->type_);
if (typical->type_ == NULL)
- return NULL;
+ return false;
ssize_t offset;
if (JSStringIsEqualToUTF8CString(property, "$cyi"))
offset = 0;
else if (!CYGetOffset(pool, context, property, offset))
- return NULL;
+ return false;
ffi_type *ffi(typical->GetFFI());
@@ -865,7 +867,7 @@ static bool Pointer_setProperty(JSContextRef context, JSObjectRef object, JSStri
CYPoolFFI(NULL, context, typical->type_, ffi, base, value);
return true;
-} CYCatch }
+} CYCatch(false) }
static JSValueRef Struct_callAsFunction_$cya(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
Struct_privateData *internal(reinterpret_cast(JSObjectGetPrivate(_this)));
@@ -887,7 +889,7 @@ static JSValueRef Struct_getProperty(JSContextRef context, JSObjectRef object, J
JSObjectRef owner(internal->GetOwner() ?: object);
return CYFromFFI(context, typical->type_->data.signature.elements[index].type, typical->GetFFI()->elements[index], base, false, owner);
-} CYCatch }
+} CYCatch(NULL) }
static bool Struct_setProperty(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef value, JSValueRef *exception) { CYTry {
CYPool pool;
@@ -902,7 +904,7 @@ static bool Struct_setProperty(JSContextRef context, JSObjectRef object, JSStrin
CYPoolFFI(NULL, context, typical->type_->data.signature.elements[index].type, typical->GetFFI()->elements[index], base, value);
return true;
-} CYCatch }
+} CYCatch(false) }
static void Struct_getPropertyNames(JSContextRef context, JSObjectRef object, JSPropertyNameAccumulatorRef names) {
Struct_privateData *internal(reinterpret_cast(JSObjectGetPrivate(object)));
@@ -930,7 +932,7 @@ static void Struct_getPropertyNames(JSContextRef context, JSObjectRef object, JS
}
}
-JSValueRef CYCallFunction(apr_pool_t *pool, JSContextRef context, size_t setups, void *setup[], size_t count, const JSValueRef arguments[], bool initialize, JSValueRef *exception, sig::Signature *signature, ffi_cif *cif, void (*function)()) { CYTry {
+JSValueRef CYCallFunction(CYPool &pool, JSContextRef context, size_t setups, void *setup[], size_t count, const JSValueRef arguments[], bool initialize, JSValueRef *exception, sig::Signature *signature, ffi_cif *cif, void (*function)()) { CYTry {
if (setups + count != signature->count - 1)
throw CYJSError(context, "incorrect number of arguments to ffi function");
@@ -943,7 +945,7 @@ JSValueRef CYCallFunction(apr_pool_t *pool, JSContextRef context, size_t setups,
ffi_type *ffi(cif->arg_types[index]);
// XXX: alignment?
values[index] = new(pool) uint8_t[ffi->size];
- CYPoolFFI(pool, context, element->type, ffi, values[index], arguments[index - setups]);
+ CYPoolFFI(&pool, context, element->type, ffi, values[index], arguments[index - setups]);
}
uint8_t value[cif->rtype->size];
@@ -954,7 +956,7 @@ JSValueRef CYCallFunction(apr_pool_t *pool, JSContextRef context, size_t setups,
ffi_call(cif, function, value, values);
return CYFromFFI(context, signature->elements[0].type, cif->rtype, value, initialize);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Functor_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
CYPool pool;
@@ -1020,7 +1022,7 @@ static JSValueRef All_getProperty(JSContextRef context, JSObjectRef object, JSSt
}
return NULL;
-} CYCatch }
+} CYCatch(NULL) }
static void All_getPropertyNames(JSContextRef context, JSObjectRef object, JSPropertyNameAccumulatorRef names) {
JSObjectRef global(CYGetGlobalObject(context));
@@ -1049,7 +1051,7 @@ static JSObjectRef Pointer_new(JSContextRef context, JSObjectRef object, size_t
sig::Parse(pool, &signature, type, &Structor_);
return CYMakePointer(context, value, _not(size_t), signature.elements[0].type, NULL, NULL);
-} CYCatch }
+} CYCatch(NULL) }
static JSObjectRef Type_new(JSContextRef context, JSObjectRef object, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 1)
@@ -1057,7 +1059,7 @@ static JSObjectRef Type_new(JSContextRef context, JSObjectRef object, size_t cou
CYPool pool;
const char *type(CYPoolCString(pool, context, arguments[0]));
return CYMakeType(context, type);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_callAsFunction_arrayOf(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 1)
@@ -1078,7 +1080,7 @@ static JSValueRef Type_callAsFunction_arrayOf(JSContextRef context, JSObjectRef
type.data.data.size = index;
return CYMakeType(context, &type);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_callAsFunction_constant(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 0)
@@ -1088,7 +1090,7 @@ static JSValueRef Type_callAsFunction_constant(JSContextRef context, JSObjectRef
sig::Type type(*internal->type_);
type.flags |= JOC_TYPE_CONST;
return CYMakeType(context, &type);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_callAsFunction_pointerTo(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 0)
@@ -1104,7 +1106,7 @@ static JSValueRef Type_callAsFunction_pointerTo(JSContextRef context, JSObjectRe
type.data.data.size = 0;
return CYMakeType(context, &type);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_callAsFunction_withName(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 1)
@@ -1117,7 +1119,7 @@ static JSValueRef Type_callAsFunction_withName(JSContextRef context, JSObjectRef
sig::Type type(*internal->type_);
type.name = name;
return CYMakeType(context, &type);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_callAsFunction(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 1)
@@ -1129,9 +1131,9 @@ static JSValueRef Type_callAsFunction(JSContextRef context, JSObjectRef object,
// XXX: alignment?
uint8_t value[ffi->size];
CYPool pool;
- CYPoolFFI(pool, context, type, ffi, value, arguments[0]);
+ CYPoolFFI(&pool, context, type, ffi, value, arguments[0]);
return CYFromFFI(context, type, ffi, value);
-} CYCatch }
+} CYCatch(NULL) }
static JSObjectRef Type_callAsConstructor(JSContextRef context, JSObjectRef object, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 0)
@@ -1150,7 +1152,7 @@ static JSObjectRef Type_callAsConstructor(JSContextRef context, JSObjectRef obje
void *value(malloc(internal->GetFFI()->size));
return CYMakePointer(context, value, length, type, NULL, NULL);
-} CYCatch }
+} CYCatch(NULL) }
static JSObjectRef Functor_new(JSContextRef context, JSObjectRef object, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
if (count != 2)
@@ -1158,12 +1160,12 @@ static JSObjectRef Functor_new(JSContextRef context, JSObjectRef object, size_t
CYPool pool;
const char *type(CYPoolCString(pool, context, arguments[1]));
return CYMakeFunctor(context, arguments[0], type);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef CYValue_callAsFunction_valueOf(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
CYValue *internal(reinterpret_cast(JSObjectGetPrivate(_this)));
return CYCastJSValue(context, reinterpret_cast(internal->value_));
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef CYValue_callAsFunction_toJSON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
return CYValue_callAsFunction_valueOf(context, object, _this, count, arguments, exception);
@@ -1174,7 +1176,7 @@ static JSValueRef CYValue_callAsFunction_toCYON(JSContextRef context, JSObjectRe
char string[32];
sprintf(string, "%p", internal->value_);
return CYCastJSValue(context, string);
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Pointer_callAsFunction_toCYON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
Pointer *internal(reinterpret_cast(JSObjectGetPrivate(_this)));
@@ -1187,7 +1189,7 @@ static JSValueRef Pointer_callAsFunction_toCYON(JSContextRef context, JSObjectRe
sprintf(string, "%p", internal->value_);
return CYCastJSValue(context, string);
}
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_getProperty_alignment(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) {
Type_privateData *internal(reinterpret_cast(JSObjectGetPrivate(object)));
@@ -1209,7 +1211,7 @@ static JSValueRef Type_callAsFunction_toString(JSContextRef context, JSObjectRef
CYPool pool;
const char *type(sig::Unparse(pool, internal->type_));
return CYCastJSValue(context, CYJSString(type));
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_callAsFunction_toCYON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) { CYTry {
Type_privateData *internal(reinterpret_cast(JSObjectGetPrivate(_this)));
@@ -1217,9 +1219,9 @@ static JSValueRef Type_callAsFunction_toCYON(JSContextRef context, JSObjectRef o
const char *type(sig::Unparse(pool, internal->type_));
std::ostringstream str;
CYStringify(str, type, strlen(type));
- char *cyon(apr_pstrcat(pool, "new Type(", str.str().c_str(), ")", NULL));
+ char *cyon(pool.strcat("new Type(", str.str().c_str(), ")", NULL));
return CYCastJSValue(context, CYJSString(cyon));
-} CYCatch }
+} CYCatch(NULL) }
static JSValueRef Type_callAsFunction_toJSON(JSContextRef context, JSObjectRef object, JSObjectRef _this, size_t count, const JSValueRef arguments[], JSValueRef *exception) {
return Type_callAsFunction_toString(context, object, _this, count, arguments, exception);
@@ -1293,7 +1295,7 @@ JSObjectRef CYGetGlobalObject(JSContextRef context) {
return JSContextGetGlobalObject(context);
}
-const char *CYExecute(apr_pool_t *pool, CYUTF8String code) {
+const char *CYExecute(CYPool &pool, CYUTF8String code) {
JSContextRef context(CYGetJSContext());
JSValueRef exception(NULL), result;
@@ -1344,8 +1346,6 @@ void CYInitializeDynamic() {
initialized_ = true;
else return;
- CYInitializeStatic();
-
JSObjectMakeArray$ = reinterpret_cast(dlsym(RTLD_DEFAULT, "JSObjectMakeArray"));
JSClassDefinition definition;
@@ -1424,7 +1424,7 @@ void CYThrow(JSContextRef context, JSValueRef value) {
throw CYJSError(context, value);
}
-const char *CYJSError::PoolCString(apr_pool_t *pool) const {
+const char *CYJSError::PoolCString(CYPool &pool) const {
// XXX: this used to be CYPoolCString
return CYPoolCCYON(pool, context_, value_);
}
@@ -1457,7 +1457,8 @@ CYJSError::CYJSError(JSContextRef context, const char *format, ...) {
va_list args;
va_start(args, format);
- const char *message(apr_pvsprintf(pool, format, args));
+ // XXX: there might be a beter way to think about this
+ const char *message(pool.vsprintf(64, format, args));
va_end(args);
value_ = CYCastJSError(context, message);