clean up prototype and defaults state

This commit is contained in:
Ari Lazier 2015-10-15 19:48:46 -07:00 committed by Scott Kyle
parent 69bf42c4f4
commit 5edb205978
3 changed files with 17 additions and 0 deletions

View File

@ -31,3 +31,4 @@ realm::Schema RJSParseSchema(JSContextRef ctx, JSObjectRef jsonObject);
JSValueRef RJSPrototypeForClassName(const std::string &className);
realm::ObjectDefaults &RJSDefaultsForClassName(const std::string &className);
void RJSSchemaClearState(JSContextRef ctx);

View File

@ -55,6 +55,20 @@ JSValueRef RJSPrototypeForClassName(const std::string &className) {
return s_prototypes[className];
}
void RJSSchemaClearState(JSContextRef ctx) {
for (auto prototype : s_prototypes) {
JSValueUnprotect(ctx, prototype.second);
}
s_prototypes.clear();
for (auto defaults : s_defaults) {
for (auto value : defaults.second) {
JSValueUnprotect(ctx, value.second);
}
}
s_defaults.clear();
}
static inline Property RJSParseProperty(JSContextRef ctx, JSObjectRef propertyObject) {
static JSStringRef nameString = JSStringCreateWithUTF8CString("name");
static JSStringRef typeString = JSStringCreateWithUTF8CString("type");

View File

@ -20,6 +20,7 @@
#import "RJSRealm.hpp"
#import "RJSObject.hpp"
#import "RJSUtil.hpp"
#import "RJSSchema.hpp"
#include "shared_realm.hpp"
@ -57,6 +58,7 @@ NSString *RealmFileDirectory() {
static JSValueRef ClearTestState(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef *exception) {
[RealmJS clearTestState];
RJSSchemaClearState(ctx);
return NULL;
}