Skip to content

Commit 9860f3d

Browse files
committed
Fixed problems with file writing
1 parent 00b2eab commit 9860f3d

File tree

4 files changed

+103
-176
lines changed

4 files changed

+103
-176
lines changed

Diff for: chain.data/chain.data.c

+12-3
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ void chain_data_openfile(t_chain_data *x, char *filename, short path){
197197
char buf[1024 * 1024];
198198
err = sysfile_read(fh, &num_bytes, buf);
199199

200+
// Count Tokens
200201
long num_tokens = 1;
201202
for (long i=0; i < num_bytes; i++){
202203
if (buf[i] == ' '){
@@ -206,7 +207,7 @@ void chain_data_openfile(t_chain_data *x, char *filename, short path){
206207

207208
long num_samples = (num_tokens - 3) / 2;
208209

209-
210+
chain_data_clear(x);
210211

211212
// Get metric name token
212213
char *token;
@@ -239,7 +240,7 @@ void chain_data_openfile(t_chain_data *x, char *filename, short path){
239240
x->s_end = strtol(token, NULL, 10);
240241

241242

242-
chain_data_clear(x);
243+
243244

244245
x->s_values = malloc(num_samples * sizeof(*(x->s_values)));
245246
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)
280281
path = path_getdefault();
281282
}
282283
chain_data_writefile(x, filename, path);
284+
chain_info("Writing: %s", filename);
283285
outlet_anything(x->s_outlet2, gensym("write_done"), 0L, NULL);
284286
}
285287

286288
void chain_data_writefile(t_chain_data *x, char *filename, short path)
287289
{
290+
chain_info("Writing for real: %s", filename);
288291
long message_size = (x->s_num_samples * (44)) + 256;
289-
char buf[message_size];
292+
char *buf = malloc(sizeof(*buf) * message_size);
290293

291294
// Write Header
292295
char header[256];
@@ -295,6 +298,8 @@ void chain_data_writefile(t_chain_data *x, char *filename, short path)
295298

296299
// Write Values
297300
for (long i=0; i < x->s_num_samples; i++){
301+
long j = i;
302+
j = j + 0;
298303
char pair[44];
299304
sprintf(pair, " %lf %lf", *(x->s_offsets + i), *(x->s_values + i));
300305
strncat(buf, pair, 44);
@@ -309,6 +314,7 @@ void chain_data_writefile(t_chain_data *x, char *filename, short path)
309314
err = sysfile_write(fh, &size, (void *)buf);
310315
if (err) {chain_error("Error writing to file: %s", filename);}
311316

317+
free(buf);
312318
sysfile_close(fh);
313319
}
314320

@@ -429,6 +435,9 @@ void chain_data_clear(t_chain_data *x){
429435
free(x->s_offsets);
430436
x->s_offsets = NULL;
431437
}
438+
x->s_metric_name = NULL;
439+
x->s_start = 0;
440+
x->s_end = 0;
432441
x->s_num_samples = 0;
433442
}
434443

Diff for: common/messages.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
void chain_error(const char *fmt, ...)
55
{
6-
char buffer[2048];
6+
char buffer[4096];
77
va_list args;
88
va_start(args, fmt);
99
vsprintf(buffer, fmt, args);
@@ -13,7 +13,7 @@ void chain_error(const char *fmt, ...)
1313

1414
void chain_info(const char *fmt, ...)
1515
{
16-
char buffer[2048];
16+
char buffer[4096];
1717
va_list args;
1818
va_start(args, fmt);
1919
vsprintf(buffer, fmt, args);
@@ -23,7 +23,7 @@ void chain_info(const char *fmt, ...)
2323

2424
void chain_debug(const char *fmt, ...)
2525
{
26-
char buffer[2048];
26+
char buffer[4096];
2727
va_list args;
2828
va_start(args, fmt);
2929
vsprintf(buffer, fmt, args);

0 commit comments

Comments
 (0)