From 5fdd421b7b119a8b53afa75d61a62b77bd70fb87 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Wed, 16 Jun 2004 17:57:07 +0000
Subject: [PATCH] Do a default List_Create in List_CreateFromFile instead of
 returning NULL. (This fixes the problems in Plugins that assume that the
 element lists are all ready to be added into.)

---
 Common/Views.cpp | 16 +++++++++-------
 DataStr/List.cpp | 12 +++++++-----
 DataStr/List.h   |  2 +-
 3 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/Common/Views.cpp b/Common/Views.cpp
index 8e6d45c3a2..9a949c238c 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-// $Id: Views.cpp,v 1.123 2004-06-01 06:29:13 geuzaine Exp $
+// $Id: Views.cpp,v 1.124 2004-06-16 17:57:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -831,9 +831,11 @@ void ReadView(FILE *file, char *filename)
       v->DataSize = size;
 
       // Time values
-      v->Time = List_CreateFromFile(v->NbTimeStep, size, file, format, swap);
+      v->Time = List_CreateFromFile(v->NbTimeStep, 10, size, file, format, swap);
 
-#define LL List_CreateFromFile(nb, size, file, format, swap)
+      // if nb==0, this still allocates a list (empty, but ready to be
+      // filled later, e.g. in a plugin)
+#define LL List_CreateFromFile(nb, 100, size, file, format, swap)
 
       // Points
       nb = v->NbSP ? v->NbSP * (v->NbTimeStep + 3) : 0;
@@ -903,12 +905,12 @@ void ReadView(FILE *file, char *filename)
 
       // Strings
       nb = v->NbT2 ? v->NbT2 * 4 : 0;
-      v->T2D = List_CreateFromFile(nb, size, file, format, swap);
-      v->T2C = List_CreateFromFile(t2l, sizeof(char), file, format, swap);
+      v->T2D = List_CreateFromFile(nb, 10, size, file, format, swap);
+      v->T2C = List_CreateFromFile(t2l, 10, sizeof(char), file, format, swap);
 
       nb = v->NbT3 ? v->NbT3 * 5 : 0;
-      v->T3D = List_CreateFromFile(nb, size, file, format, swap);
-      v->T3C = List_CreateFromFile(t3l, sizeof(char), file, format, swap);
+      v->T3D = List_CreateFromFile(nb, 10, size, file, format, swap);
+      v->T3C = List_CreateFromFile(t3l, 10, sizeof(char), file, format, swap);
 
 
       Msg(DEBUG,
diff --git a/DataStr/List.cpp b/DataStr/List.cpp
index c41069e7f1..f2ec9170fe 100644
--- a/DataStr/List.cpp
+++ b/DataStr/List.cpp
@@ -1,4 +1,4 @@
-// $Id: List.cpp,v 1.30 2004-05-18 20:51:31 geuzaine Exp $
+// $Id: List.cpp,v 1.31 2004-06-16 17:57:07 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -420,16 +420,18 @@ void swap_bytes(char *array, int size, int n)
   Free(x);
 }
 
-List_T *List_CreateFromFile(int n, int size, FILE * file, int format,
+List_T *List_CreateFromFile(int n, int incr, int size, FILE * file, int format,
                             int swap)
 {
   int i;
   List_T *liste;
 
-  if(!n)
-    return NULL;
+  if(!n){
+    liste = List_Create(incr, incr, size);
+    return liste;
+  }
 
-  liste = List_Create(n, 1, size);
+  liste = List_Create(n, incr, size);
   liste->n = n;
   switch (format) {
   case LIST_FORMAT_ASCII:
diff --git a/DataStr/List.h b/DataStr/List.h
index 1a872a160b..68d216b77d 100644
--- a/DataStr/List.h
+++ b/DataStr/List.h
@@ -69,7 +69,7 @@ void    List_Reset(List_T *liste);
 void    List_Action(List_T *liste, void (*action)(void *data, void *dummy));
 void    List_Action_Inverse(List_T *liste, void (*action)(void *data, void *dummy));
 void    List_Copy(List_T *a , List_T *b);
-List_T *List_CreateFromFile(int n, int size, FILE *file, int format, int swap);
+List_T *List_CreateFromFile(int n, int incr, int size, FILE *file, int format, int swap);
 void    List_WriteToFile(List_T *liste, FILE *file, int format);
 
 #endif
-- 
GitLab