summaryrefslogtreecommitdiff
path: root/rts/ProfHeap.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2008-10-03 15:07:45 +0000
committerSimon Marlow <marlowsd@gmail.com>2008-10-03 15:07:45 +0000
commit8ef97aa30a33fb3b536252b2c0459cdf0fd5236f (patch)
tree01c34194a824639f11fc6ab0c2ddfd84109a8327 /rts/ProfHeap.c
parentc74dd1f133703da84fdd8a513a3598fc74b67f0b (diff)
downloadhaskell-8ef97aa30a33fb3b536252b2c0459cdf0fd5236f.tar.gz
Fix #1955 for heap profiles generated by +RTS -hT
Diffstat (limited to 'rts/ProfHeap.c')
-rw-r--r--rts/ProfHeap.c21
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();
}