@@ -108,7 +108,7 @@ void GitBlob::LookupAfterWork(uv_work_t *req) {
108108 LookupBaton *baton = static_cast <LookupBaton *>(req->data );
109109
110110 TryCatch try_catch;
111- if (success ( baton->error , baton-> callback ) ) {
111+ if (! baton->error ) {
112112 Handle<Value> argv[1 ] = { External::New (baton->out ) };
113113 Handle<Object> object = constructor_template->NewInstance (1 , argv);
114114 Handle<Value> argv2[2 ] = {
@@ -117,11 +117,10 @@ void GitBlob::LookupAfterWork(uv_work_t *req) {
117117 };
118118 baton->callback ->Call (Context::GetCurrent ()->Global (), 2 , argv2);
119119 } else {
120- Handle<Value> argv2[2 ] = {
121- Exception::Error (String::New (baton->error ->message )),
122- Local<Value>::New (Null ())
120+ Handle<Value> argv2[1 ] = {
121+ GitError::WrapError (baton->error )
123122 };
124- baton->callback ->Call (Context::GetCurrent ()->Global (), 2 , argv2);
123+ baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv2);
125124 }
126125
127126 if (try_catch.HasCaught ()) {
@@ -197,7 +196,8 @@ Handle<Value> GitBlob::CreateFromFile(const Arguments& args) {
197196 baton->id = ObjectWrap::Unwrap<GitOid>(args[0 ]->ToObject ())->GetValue ();
198197 baton->repo = ObjectWrap::Unwrap<GitRepo>(args[1 ]->ToObject ())->GetValue ();
199198
200- baton->path = stringArgToString (args[2 ]->ToString ()).c_str ();
199+ String::Utf8Value str2 (args[2 ]->ToString ());
200+ baton->path = strdup (*str2);
201201 baton->callback = Persistent<Function>::New (Local<Function>::Cast (args[3 ]));
202202
203203 uv_queue_work (uv_default_loop (), &baton->request , CreateFromFileWork, (uv_after_work_cb)CreateFromFileAfterWork);
@@ -222,7 +222,7 @@ void GitBlob::CreateFromFileAfterWork(uv_work_t *req) {
222222 CreateFromFileBaton *baton = static_cast <CreateFromFileBaton *>(req->data );
223223
224224 TryCatch try_catch;
225- if (success ( baton->error , baton-> callback ) ) {
225+ if (! baton->error ) {
226226 Handle<Value> argv[1 ] = { External::New (baton->id ) };
227227 Handle<Object> object = GitOid::constructor_template->NewInstance (1 , argv);
228228 Handle<Value> argv2[2 ] = {
@@ -231,18 +231,19 @@ void GitBlob::CreateFromFileAfterWork(uv_work_t *req) {
231231 };
232232 baton->callback ->Call (Context::GetCurrent ()->Global (), 2 , argv2);
233233 } else {
234- Handle<Value> argv2[2 ] = {
235- Exception::Error (String::New (baton->error ->message )),
236- Local<Value>::New (Null ())
234+ Handle<Value> argv2[1 ] = {
235+ GitError::WrapError (baton->error )
237236 };
238- baton->callback ->Call (Context::GetCurrent ()->Global (), 2 , argv2);
237+ baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv2);
239238 }
240239
241240 if (try_catch.HasCaught ()) {
242241 node::FatalException (try_catch);
243242 }
244243
245244 baton->callback .Dispose ();
245+
246+ delete baton->path ;
246247 delete baton;
247248}
248249
@@ -271,7 +272,7 @@ Handle<Value> GitBlob::CreateFromBuffer(const Arguments& args) {
271272 baton->oid = ObjectWrap::Unwrap<GitOid>(args[0 ]->ToObject ())->GetValue ();
272273 baton->repo = ObjectWrap::Unwrap<GitRepo>(args[1 ]->ToObject ())->GetValue ();
273274 baton->buffer = Buffer::Data (ObjectWrap::Unwrap<Buffer>(args[2 ]->ToObject ()));
274- baton->len = ObjectWrap::Unwrap<Number>( args[3 ]->ToObject () )->Value ();
275+ baton->len = args[3 ]->ToNumber ( )->Value ();
275276 baton->callback = Persistent<Function>::New (Local<Function>::Cast (args[4 ]));
276277
277278 uv_queue_work (uv_default_loop (), &baton->request , CreateFromBufferWork, (uv_after_work_cb)CreateFromBufferAfterWork);
@@ -297,7 +298,7 @@ void GitBlob::CreateFromBufferAfterWork(uv_work_t *req) {
297298 CreateFromBufferBaton *baton = static_cast <CreateFromBufferBaton *>(req->data );
298299
299300 TryCatch try_catch;
300- if (success ( baton->error , baton-> callback ) ) {
301+ if (! baton->error ) {
301302 Handle<Value> argv[1 ] = { External::New (baton->oid ) };
302303 Handle<Object> object = GitOid::constructor_template->NewInstance (1 , argv);
303304 Handle<Value> argv2[2 ] = {
@@ -306,11 +307,10 @@ void GitBlob::CreateFromBufferAfterWork(uv_work_t *req) {
306307 };
307308 baton->callback ->Call (Context::GetCurrent ()->Global (), 2 , argv2);
308309 } else {
309- Handle<Value> argv2[2 ] = {
310- Exception::Error (String::New (baton->error ->message )),
311- Local<Value>::New (Null ())
310+ Handle<Value> argv2[1 ] = {
311+ GitError::WrapError (baton->error )
312312 };
313- baton->callback ->Call (Context::GetCurrent ()->Global (), 2 , argv2);
313+ baton->callback ->Call (Context::GetCurrent ()->Global (), 1 , argv2);
314314 }
315315
316316 if (try_catch.HasCaught ()) {
0 commit comments