|
|
|
|
209
|
|
209
|
|
210
|
NSFileManager * fm = [NSFileManager defaultManager];
|
210
|
NSFileManager * fm = [NSFileManager defaultManager];
|
211
|
NSMutableData * fileContent = [NSMutableData alloc];
|
211
|
NSMutableData * fileContent = [NSMutableData alloc];
|
212
|
-
|
|
|
213
|
- char bytes[[dataArray count]];
|
|
|
|
|
212
|
+ // prevent stack overflow, alloc on heap
|
|
|
213
|
+ char * bytes = (char*) malloc([dataArray count]);
|
|
|
214
|
+// char bytes[[dataArray count]];
|
214
|
for(int i = 0; i < dataArray.count; i++) {
|
215
|
for(int i = 0; i < dataArray.count; i++) {
|
215
|
bytes[i] = [[dataArray objectAtIndex:i] charValue];
|
216
|
bytes[i] = [[dataArray objectAtIndex:i] charValue];
|
216
|
}
|
217
|
}
|
217
|
[fileContent appendBytes:bytes length:dataArray.count];
|
218
|
[fileContent appendBytes:bytes length:dataArray.count];
|
218
|
BOOL success = [fm createFileAtPath:path contents:fileContent attributes:NULL];
|
219
|
BOOL success = [fm createFileAtPath:path contents:fileContent attributes:NULL];
|
219
|
-
|
|
|
|
|
220
|
+ free(bytes);
|
220
|
if(success == YES)
|
221
|
if(success == YES)
|
221
|
callback(@[[NSNull null]]);
|
222
|
callback(@[[NSNull null]]);
|
222
|
else
|
223
|
else
|
|
|
|
|
259
|
|
260
|
|
260
|
RCT_EXPORT_METHOD(writeArrayChunk:(NSString *)streamId withArray:(NSArray *)dataArray callback:(RCTResponseSenderBlock) callback) {
|
261
|
RCT_EXPORT_METHOD(writeArrayChunk:(NSString *)streamId withArray:(NSArray *)dataArray callback:(RCTResponseSenderBlock) callback) {
|
261
|
RNFetchBlobFS *fs = [[RNFetchBlobFS getFileStreams] valueForKey:streamId];
|
262
|
RNFetchBlobFS *fs = [[RNFetchBlobFS getFileStreams] valueForKey:streamId];
|
262
|
- char bytes[[dataArray count]];
|
|
|
|
|
263
|
+// char bytes[[dataArray count]];
|
|
|
264
|
+ char * bytes = (char *) malloc([dataArray count]);
|
263
|
for(int i = 0; i < dataArray.count; i++) {
|
265
|
for(int i = 0; i < dataArray.count; i++) {
|
264
|
bytes[i] = [[dataArray objectAtIndex:i] charValue];
|
266
|
bytes[i] = [[dataArray objectAtIndex:i] charValue];
|
265
|
}
|
267
|
}
|
266
|
NSMutableData * data = [NSMutableData alloc];
|
268
|
NSMutableData * data = [NSMutableData alloc];
|
267
|
[data appendBytes:bytes length:dataArray.count];
|
269
|
[data appendBytes:bytes length:dataArray.count];
|
268
|
[fs write:data];
|
270
|
[fs write:data];
|
|
|
271
|
+ free(bytes);
|
269
|
callback(@[[NSNull null]]);
|
272
|
callback(@[[NSNull null]]);
|
270
|
}
|
273
|
}
|
271
|
|
274
|
|