diff options
author | Simon Marlow <marlowsd@gmail.com> | 2008-10-03 15:07:45 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2008-10-03 15:07:45 +0000 |
commit | 8ef97aa30a33fb3b536252b2c0459cdf0fd5236f (patch) | |
tree | 01c34194a824639f11fc6ab0c2ddfd84109a8327 /rts/ProfHeap.c | |
parent | c74dd1f133703da84fdd8a513a3598fc74b67f0b (diff) | |
download | haskell-8ef97aa30a33fb3b536252b2c0459cdf0fd5236f.tar.gz |
Fix #1955 for heap profiles generated by +RTS -hT
Diffstat (limited to 'rts/ProfHeap.c')
-rw-r--r-- | rts/ProfHeap.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/rts/ProfHeap.c b/rts/ProfHeap.c index 9aca5a9fc0..9cb47a19fd 100644 --- a/rts/ProfHeap.c +++ b/rts/ProfHeap.c @@ -397,10 +397,25 @@ void freeProfiling1 (void) void initProfiling2 (void) { + char *prog; + + prog = stgMallocBytes(strlen(prog_name) + 1, "initProfiling2"); + strcpy(prog, prog_name); +#ifdef mingw32_HOST_OS + // on Windows, drop the .exe suffix if there is one + { + char *suff; + suff = strrchr(prog,'.'); + if (suff != NULL && !strcmp(suff,".exe")) { + *suff = '\0'; + } + } +#endif + if (RtsFlags.ProfFlags.doHeapProfile) { /* Initialise the log file name */ - hp_filename = stgMallocBytes(strlen(prog_name) + 6, "hpFileName"); - sprintf(hp_filename, "%s.hp", prog_name); + hp_filename = stgMallocBytes(strlen(prog) + 6, "hpFileName"); + sprintf(hp_filename, "%s.hp", prog); /* open the log file */ if ((hp_file = fopen(hp_filename, "w")) == NULL) { @@ -411,6 +426,8 @@ void initProfiling2 (void) } } + stgFree(prog); + initHeapProfiling(); } |