Gnumeric Reader: Fix memory leak
[pspp] / src / data / spreadsheet-reader.h
index 9a46b35e9eb6a255e78403e9cfa242f6c133a754..c03cf71642135f0ef12331e247a4fe44d58fb9a7 100644 (file)
@@ -45,9 +45,9 @@ bool convert_cell_ref (const char *ref,
                       int *coli, int *rowi);
 
 
-#define _xml(X) (CHAR_CAST (const xmlChar *, X))
+#define _xml(X) (CHAR_CAST (const xmlChar *, (X)))
 
-#define _xmlchar_to_int(X) (atoi(CHAR_CAST (const char *, X)))
+#define _xmlchar_to_int(X) ((X) ? atoi (CHAR_CAST (const char *, (X))) : -1)
 
 enum spreadsheet_type
   {
@@ -59,7 +59,7 @@ enum spreadsheet_type
 
 struct spreadsheet
 {
-  const char *file_name;
+  char *file_name;
 
   enum spreadsheet_type type;
 
@@ -68,6 +68,8 @@ struct spreadsheet
 
   /* The dictionary */
   struct dictionary *dict;
+
+  int ref_cnt;
 };
 
 
@@ -77,9 +79,11 @@ const char * spreadsheet_get_sheet_name (struct spreadsheet *s, int n);
 char * spreadsheet_get_sheet_range (struct spreadsheet *s, int n);
 
 
-char *create_cell_ref (int col0, int row0, int coli, int rowi);
+char * create_cell_ref (int col0, int row0);
+char *create_cell_range (int col0, int row0, int coli, int rowi);
 
-void spreadsheet_destroy (struct spreadsheet *);
+void spreadsheet_unref (struct spreadsheet *);
+void spreadsheet_ref (struct spreadsheet *);