44#include " indy_core.h"
55
66char * 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+
1425char * 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