Do not use __attribute__((constructor))
[lttv.git] / lttv / lttv / sync / event_processing_text.c
index 9dd5d30208b8ba9deb4214ce418b2cabe5eae371..238d658cd3d15bd2ff8f39ebbde6652ff7689b11 100644 (file)
@@ -16,6 +16,7 @@
  * MA 02111-1307, USA.
  */
 
+#define _GNU_SOURCE
 #define NANOSECONDS_PER_SECOND 1000000000
 #define CPU_FREQ 1e9
 
@@ -47,8 +48,6 @@ static void writeProcessingGraphVariablesText(SyncState* const syncState,
        const unsigned int i);
 
 // Functions specific to this module
-static void registerProcessingText() __attribute__((constructor (102)));
-
 static unsigned int readTraceNb(FILE* testCase);
 static void skipCommentLines(FILE* testCase);
 
@@ -70,7 +69,7 @@ static ProcessingModule processingModuleText = {
 /*
  * Processing Module registering function
  */
-static void registerProcessingText()
+void registerProcessingText()
 {
        g_queue_push_tail(&processingModules, &processingModuleText);
 }
@@ -120,6 +119,8 @@ static void destroyProcessingText(SyncState* const syncState)
                return;
        }
 
+       fclose(processingData->testCase);
+
        if (syncState->stats && processingData->factors)
        {
                g_array_free(processingData->factors, TRUE);
@@ -139,7 +140,6 @@ static void destroyProcessingText(SyncState* const syncState)
  */
 static void finalizeProcessingText(SyncState* const syncState)
 {
-       size_t len;
        int retval;
        unsigned int* seq;
        GArray* factors;
@@ -147,11 +147,12 @@ static void finalizeProcessingText(SyncState* const syncState)
                syncState->processingData;
        FILE* testCase= processingData->testCase;
        char* line= NULL;
+       size_t bufLen;
 
        seq= calloc(syncState->traceNb, sizeof(unsigned int));
 
        skipCommentLines(testCase);
-       retval= getline(&line, &len, testCase);
+       retval= getline(&line, &bufLen, testCase);
        while(!feof(testCase))
        {
                unsigned int sender, receiver;
@@ -164,9 +165,9 @@ static void finalizeProcessingText(SyncState* const syncState)
                        g_error(strerror(errno));
                }
 
-               if (line[len - 1] == '\n')
+               if (line[retval - 1] == '\n')
                {
-                       line[len - 1]= '\0';
+                       line[retval - 1]= '\0';
                }
 
                retval= sscanf(line, " %u %u %lf %lf %c", &sender, &receiver,
@@ -262,7 +263,7 @@ static void finalizeProcessingText(SyncState* const syncState)
                seq[sender]++;
 
                skipCommentLines(testCase);
-               retval= getline(&line, &len, testCase);
+               retval= getline(&line, &bufLen, testCase);
        }
 
        free(seq);
@@ -352,6 +353,11 @@ static unsigned int readTraceNb(FILE* testCase)
                abort();
        }
 
+       if (line)
+       {
+               free(line);
+       }
+
        return result;
 }
 
This page took 0.026311 seconds and 4 git commands to generate.