@@ -197,6 +197,7 @@ void chain_data_openfile(t_chain_data *x, char *filename, short path){
197
197
char buf [1024 * 1024 ];
198
198
err = sysfile_read (fh , & num_bytes , buf );
199
199
200
+ // Count Tokens
200
201
long num_tokens = 1 ;
201
202
for (long i = 0 ; i < num_bytes ; i ++ ){
202
203
if (buf [i ] == ' ' ){
@@ -206,7 +207,7 @@ void chain_data_openfile(t_chain_data *x, char *filename, short path){
206
207
207
208
long num_samples = (num_tokens - 3 ) / 2 ;
208
209
209
-
210
+ chain_data_clear ( x );
210
211
211
212
// Get metric name token
212
213
char * token ;
@@ -239,7 +240,7 @@ void chain_data_openfile(t_chain_data *x, char *filename, short path){
239
240
x -> s_end = strtol (token , NULL , 10 );
240
241
241
242
242
- chain_data_clear ( x );
243
+
243
244
244
245
x -> s_values = malloc (num_samples * sizeof (* (x -> s_values )));
245
246
x -> s_offsets = malloc (num_samples * sizeof (* (x -> s_offsets )));
@@ -280,13 +281,15 @@ void chain_data_dowrite(t_chain_data *x, t_symbol *s)
280
281
path = path_getdefault ();
281
282
}
282
283
chain_data_writefile (x , filename , path );
284
+ chain_info ("Writing: %s" , filename );
283
285
outlet_anything (x -> s_outlet2 , gensym ("write_done" ), 0L , NULL );
284
286
}
285
287
286
288
void chain_data_writefile (t_chain_data * x , char * filename , short path )
287
289
{
290
+ chain_info ("Writing for real: %s" , filename );
288
291
long message_size = (x -> s_num_samples * (44 )) + 256 ;
289
- char buf [ message_size ] ;
292
+ char * buf = malloc ( sizeof ( * buf ) * message_size ) ;
290
293
291
294
// Write Header
292
295
char header [256 ];
@@ -295,6 +298,8 @@ void chain_data_writefile(t_chain_data *x, char *filename, short path)
295
298
296
299
// Write Values
297
300
for (long i = 0 ; i < x -> s_num_samples ; i ++ ){
301
+ long j = i ;
302
+ j = j + 0 ;
298
303
char pair [44 ];
299
304
sprintf (pair , " %lf %lf" , * (x -> s_offsets + i ), * (x -> s_values + i ));
300
305
strncat (buf , pair , 44 );
@@ -309,6 +314,7 @@ void chain_data_writefile(t_chain_data *x, char *filename, short path)
309
314
err = sysfile_write (fh , & size , (void * )buf );
310
315
if (err ) {chain_error ("Error writing to file: %s" , filename );}
311
316
317
+ free (buf );
312
318
sysfile_close (fh );
313
319
}
314
320
@@ -429,6 +435,9 @@ void chain_data_clear(t_chain_data *x){
429
435
free (x -> s_offsets );
430
436
x -> s_offsets = NULL ;
431
437
}
438
+ x -> s_metric_name = NULL ;
439
+ x -> s_start = 0 ;
440
+ x -> s_end = 0 ;
432
441
x -> s_num_samples = 0 ;
433
442
}
434
443
0 commit comments