aboutsummaryrefslogtreecommitdiff
path: root/src/output_source.c
diff options
context:
space:
mode:
authorschnetter <schnetter@83718e91-0e4f-0410-abf4-91180603181f>2005-08-22 12:05:04 +0000
committerschnetter <schnetter@83718e91-0e4f-0410-abf4-91180603181f>2005-08-22 12:05:04 +0000
commitc13b863133b6b1e841689d6751bb38f96e9643d1 (patch)
treefe1391f058b2c55d86f7b3969d7cab85326c2e6e /src/output_source.c
parentf7c121bd07e0936ca5faabc011d44053da807f18 (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.c22
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);
}