diff options
author | schnetter <schnetter@83718e91-0e4f-0410-abf4-91180603181f> | 2005-08-22 12:05:04 +0000 |
---|---|---|
committer | schnetter <schnetter@83718e91-0e4f-0410-abf4-91180603181f> | 2005-08-22 12:05:04 +0000 |
commit | c13b863133b6b1e841689d6751bb38f96e9643d1 (patch) | |
tree | fe1391f058b2c55d86f7b3969d7cab85326c2e6e /src/output_source.c | |
parent | f7c121bd07e0936ca5faabc011d44053da807f18 (diff) |
Initialise large data arrays in several smaller chunks, not all at
once. Still does it in one file, which may still be problematic.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusUtils/Formaline/trunk@53 83718e91-0e4f-0410-abf4-91180603181f
Diffstat (limited to 'src/output_source.c')
-rw-r--r-- | src/output_source.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/output_source.c b/src/output_source.c index d319f72..15b69bd 100644 --- a/src/output_source.c +++ b/src/output_source.c @@ -12,10 +12,16 @@ -struct sourceinfo +struct datainfo { - char const * data; + unsigned char const * data; size_t length; + struct datainfo const * next; +}; + +struct sourceinfo +{ + struct datainfo const * first; char const * arrangement; char const * thorn; }; @@ -38,6 +44,7 @@ Formaline_OutputSource (void) char filename [10000]; FILE * file; int count; + struct datainfo const * datainfo; if (CCTK_MyProc (0) != 0) return 0; @@ -59,10 +66,13 @@ Formaline_OutputSource (void) cactus_source[count]->thorn); file = fopen (filename, "w"); assert (file); - fwrite (cactus_source[count]->data, - sizeof * cactus_source[count]->data, - cactus_source[count]->length, - file); + for (datainfo = cactus_source[count]->first; + datainfo; + datainfo = datainfo->next) + { + fwrite (datainfo->data, sizeof * datainfo->data, datainfo->length, + file); + } fclose (file); } |