diff --git a/Mesh/3D_BGMesh.cpp b/Mesh/3D_BGMesh.cpp
index f36a19e7a1db0de02a1241d33e1377629bf79947..981a89c33875defe849510472bff7acde0238858 100644
--- a/Mesh/3D_BGMesh.cpp
+++ b/Mesh/3D_BGMesh.cpp
@@ -1,4 +1,4 @@
-// $Id: 3D_BGMesh.cpp,v 1.33 2004-12-31 17:50:34 geuzaine Exp $
+// $Id: 3D_BGMesh.cpp,v 1.34 2004-12-31 18:15:03 geuzaine Exp $
 //
 // Copyright (C) 1997-2004 C. Geuzaine, J.-F. Remacle
 //
@@ -32,6 +32,19 @@ extern Context_T CTX;
 
 void ExportLcField(Mesh * M, char *filename, int volume, int surface)
 {
+  if(!Tree_Nbr(M->Volumes) && !Tree_Nbr(M->Surfaces)){
+    Msg(GERROR, "No volumes or surfaces to save");
+    return;
+  }
+  else if(volume && !surface && !Tree_Nbr(M->Volumes)){
+    Msg(GERROR, "No volumes to save");
+    return;
+  }
+  else if(!volume && surface && !Tree_Nbr(M->Surfaces)){
+    Msg(GERROR, "No surfaces to save");
+    return;
+  }
+
   FILE *f = fopen(filename, "w");
 
   if(!f) {
@@ -39,7 +52,7 @@ void ExportLcField(Mesh * M, char *filename, int volume, int surface)
     return;
   }
 
-  if(volume){
+  if(volume && Tree_Nbr(M->Volumes)){
     List_T *l = Tree2List(M->Volumes);
     fprintf(f, "View \"Volume LC Field\" {\n");
     for(int i = 0; i < List_Nbr(l); i++) {
@@ -71,7 +84,7 @@ void ExportLcField(Mesh * M, char *filename, int volume, int surface)
     fprintf(f, "};\n");
   }
   
-  if(surface){
+  if(surface && Tree_Nbr(M->Surfaces)){
     List_T *l = Tree2List(M->Surfaces);
     fprintf(f, "View \"Surface LC Field\" {\n");
     for(int i = 0; i < List_Nbr(l); i++) {