File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -26,7 +26,8 @@ NAN_SETTER({{ cppClassName }}::Set{{ field.cppFunctionName }}) {
2626 {{ cppClassName }} *wrapper = ObjectWrap::Unwrap<{{ cppClassName }}>(args.This ());
2727
2828 {%if field.hasConstructor %}
29- wrapper->{{ field.name }} = value;
29+ wrapper->{{ field.name }} = Persistent<Object>::New (value->ToObject ());
30+ wrapper->raw ->{{ field.name }} = *ObjectWrap::Unwrap<{{ field.cppClassName }}>(value->ToObject ())->GetValue ();
3031 {%elsif field.cppClassName == ' String' %}
3132 if (wrapper->GetValue ()->{{ field.name }}) {
3233 // free(wrapper->{{ field.name }});
Original file line number Diff line number Diff line change @@ -35,12 +35,19 @@ using namespace std;
3535 // This is going to cause memory leaks. We'll have to solve that later
3636 // TODO: Clean up memory better
3737 free (this ->raw );
38+
39+ {%each fields|fieldsInfo as field %}
40+ {%if field.hasConstructor %}
41+ {{ field.name }}.Dispose ();
42+ {{ field.name }}.Clear ();
43+ {%endif%}
44+ {%endeach%}
3845}
3946
4047void {{ cppClassName }}::ConstructFields() {
4148 {%each fields|fieldsInfo as field %}
4249 {%if field.hasConstructor %}
43- {{ field.name }} = {{ field.cppClassName }}::New (&this ->raw ->{{ field.name }});
50+ {{ field.name }} = Persistent<Object>:: New ( {{ field.cppClassName }}::New (&this ->raw ->{{ field.name }})-> ToObject () );
4451 {%endif%}
4552 {%endeach%}
4653}
Original file line number Diff line number Diff line change @@ -36,7 +36,7 @@ class {{ cppClassName }} : public ObjectWrap {
3636 {%each fields as field%}
3737 {%if not field.ignore %}
3838 {%if field.hasConstructor %}
39- Handle<Value > {{ field.name }};
39+ Persistent<Object > {{ field.name }};
4040 {%endif%}
4141 static NAN_GETTER (Get{{ field.cppFunctionName }});
4242 static NAN_SETTER (Set{{ field.cppFunctionName }});
You can’t perform that action at this time.
0 commit comments