Skip to content

Commit e094217

Browse files
committed
nodejs - handling null strings from libindy
Signed-off-by: Matthew Wright <[email protected]>
1 parent bf71d1f commit e094217

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

wrappers/nodejs/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"include"
2424
],
2525
"scripts": {
26-
"prepare": "cp -r ../../libindy/include/ .",
26+
"prepare": "cp -r ../../libindy/include .",
2727
"test": "standard && ava --fail-fast",
2828
"rebuild": "node codegen && node-gyp rebuild"
2929
},

wrappers/nodejs/src/indy.cc

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,24 @@
44
#include "indy_core.h"
55

66
char* copyCStr(const char* original){
7+
if(original == nullptr){
8+
return nullptr;
9+
}
710
size_t len = strlen(original);
811
char* dest = new char[len + 1];
912
strncpy(dest, original, len);
1013
dest[len] = '\0';
1114
return dest;
1215
}
1316

17+
v8::Local<v8::Value> toJSString(const char* str){
18+
if(str == nullptr){
19+
return Nan::Null();
20+
}
21+
return Nan::New<v8::String>(str).ToLocalChecked();
22+
}
23+
24+
1425
char* copyBuffer(const indy_u8_t* data, indy_u32_t len){
1526
char* dest = (char*)malloc(len * sizeof(char));
1627
memcpy(dest, data, len);
@@ -187,7 +198,7 @@ class IndyCallback : public Nan::AsyncResource {
187198
argv[1] = Nan::Null();
188199
break;
189200
case CB_STRING:
190-
argv[1] = Nan::New<v8::String>(icb->str0).ToLocalChecked();
201+
argv[1] = toJSString(icb->str0);
191202
break;
192203
case CB_BOOLEAN:
193204
argv[1] = Nan::New<v8::Boolean>(icb->bool0);
@@ -203,28 +214,28 @@ class IndyCallback : public Nan::AsyncResource {
203214
break;
204215
case CB_STRING_BUFFER:
205216
tuple = Nan::New<v8::Array>();
206-
tuple->Set(0, Nan::New<v8::String>(icb->str0).ToLocalChecked());
217+
tuple->Set(0, toJSString(icb->str0));
207218
tuple->Set(1, Nan::NewBuffer(icb->buffer0data, icb->buffer0len).ToLocalChecked());
208219
argv[1] = tuple;
209220
break;
210221
case CB_STRING_STRING:
211222
tuple = Nan::New<v8::Array>();
212-
tuple->Set(0, Nan::New<v8::String>(icb->str0).ToLocalChecked());
213-
tuple->Set(1, Nan::New<v8::String>(icb->str1).ToLocalChecked());
223+
tuple->Set(0, toJSString(icb->str0));
224+
tuple->Set(1, toJSString(icb->str1));
214225
argv[1] = tuple;
215226
break;
216227
case CB_STRING_STRING_TIMESTAMP:
217228
tuple = Nan::New<v8::Array>();
218-
tuple->Set(0, Nan::New<v8::String>(icb->str0).ToLocalChecked());
219-
tuple->Set(1, Nan::New<v8::String>(icb->str1).ToLocalChecked());
229+
tuple->Set(0, toJSString(icb->str0));
230+
tuple->Set(1, toJSString(icb->str1));
220231
tuple->Set(2, Nan::New<v8::Number>(icb->timestamp0));
221232
argv[1] = tuple;
222233
break;
223234
case CB_STRING_STRING_STRING:
224235
tuple = Nan::New<v8::Array>();
225-
tuple->Set(0, Nan::New<v8::String>(icb->str0).ToLocalChecked());
226-
tuple->Set(1, Nan::New<v8::String>(icb->str1).ToLocalChecked());
227-
tuple->Set(2, Nan::New<v8::String>(icb->str2).ToLocalChecked());
236+
tuple->Set(0, toJSString(icb->str0));
237+
tuple->Set(1, toJSString(icb->str1));
238+
tuple->Set(2, toJSString(icb->str2));
228239
argv[1] = tuple;
229240
break;
230241
}

0 commit comments

Comments
 (0)