Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Argh ... a parse error is killing me, lets clean up my mess before dying
[simgrid.git] / src / surf / surfxml_parse.c
index ee3c95f..3d6a122 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011. The SimGrid Team.
+/* Copyright (c) 2006-2013. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -33,9 +33,12 @@ extern AS_t current_routing;
 void surf_parse_error(const char *fmt, ...) {
   va_list va;
   va_start(va,fmt);
+  int lineno = surf_parse_lineno;
   char *msg = bvprintf(fmt,va);
   va_end(va);
-  xbt_die("Parse error at %s:%d: %s", surf_parsed_filename, surf_parse_lineno, msg);
+  cleanup();
+  surf_exit();
+  xbt_die("Parse error at %s:%d: %s", surf_parsed_filename, lineno, msg);
 }
 void surf_parse_warn(const char *fmt, ...) {
   va_list va;
@@ -858,13 +861,11 @@ void ETag_surfxml_AS(void){
   sg_platf_new_AS_end();
 }
 
-extern int _sg_init_status; /* FIXME: find a proper way to export this at some point */
-
 void STag_surfxml_config(void){
   AS_TAG = 0;
   xbt_assert(current_property_set == NULL, "Someone forgot to reset the property set to NULL in its closing tag (or XML malformed)");
   XBT_DEBUG("START configuration name = %s",A_surfxml_config_id);
-  if (_sg_init_status == 2) {
+  if (_sg_cfg_init_status == 2) {
     surf_parse_error("All <config> tags must be given before any platform elements (such as <AS>, <host>, <cluster>, <link>, etc).");
   }
 }