]> granicus.if.org Git - check/commitdiff
simplify path and file name handling and honor const rules
authorbrarcher <brarcher@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Sat, 25 Jan 2014 18:18:17 +0000 (18:18 +0000)
committerbrarcher <brarcher@64e312b2-a51f-0410-8e61-82d0ca0eb02a>
Sat, 25 Jan 2014 18:18:17 +0000 (18:18 +0000)
the path and file name variables are not const, but were assigned
const strings. However, both variables could be reassigned
non const data, and the path_name could be allocated data.
To prevent this mix, they are both non-const and initially NULL.
If they are NULL during the print, they are replaced before printing.
Further, the path_name is now always free'd at the end, as it is
either NULL or allocated memory.

git-svn-id: svn+ssh://svn.code.sf.net/p/check/code/trunk@1066 64e312b2-a51f-0410-8e61-82d0ca0eb02a

src/check_print.c

index c0881baa0ccfdc5616a693c34c1bfe8240a2ae07..83f51e90ca9c34179bda33903d326e246c289d5d 100644 (file)
@@ -136,8 +136,8 @@ void tr_fprint (FILE *file, TestResult *tr, enum print_output print_mode)
 void tr_xmlprint (FILE *file, TestResult *tr, enum print_output print_mode CK_ATTRIBUTE_UNUSED)
 {
   char result[10];
-  char *path_name = (char*)"";
-  char *file_name = (char*)"";
+  char *path_name = NULL;
+  char *file_name = NULL;
   char *slash = NULL;
 
   switch (tr->rtype) {
@@ -164,7 +164,7 @@ void tr_xmlprint (FILE *file, TestResult *tr, enum print_output print_mode CK_AT
     }
 
     if (slash == NULL) {
-      path_name = (char*)".";
+      path_name = strdup(".");
       file_name = tr->file;
     } else {
       path_name = strdup(tr->file);
@@ -175,8 +175,8 @@ void tr_xmlprint (FILE *file, TestResult *tr, enum print_output print_mode CK_AT
     
 
   fprintf(file, "    <test result=\"%s\">\n", result);
-  fprintf(file, "      <path>%s</path>\n", path_name);
-  fprintf(file, "      <fn>%s:%d</fn>\n", file_name, tr->line);
+  fprintf(file, "      <path>%s</path>\n", (path_name == NULL ? "" : path_name));
+  fprintf(file, "      <fn>%s:%d</fn>\n", (file_name == NULL ? "" : file_name), tr->line);
   fprintf(file, "      <id>%s</id>\n", tr->tname);
   fprintf(file, "      <iteration>%d</iteration>\n", tr->iter);
   fprintf(file, "      <duration>%d.%06d</duration>\n",
@@ -190,9 +190,7 @@ void tr_xmlprint (FILE *file, TestResult *tr, enum print_output print_mode CK_AT
   fprintf(file,"</message>\n");
   fprintf(file, "    </test>\n");
   
-  if (slash != NULL) {
-    free(path_name);
-  }
+  free(path_name);
 }
 
 enum print_output get_env_printmode (void)