Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] Re: text2skin coredump on exit



Am Sonntag, 1. August 2004 15:35 schrieb Olaf Titz:
> The text2skin plugin causes this coredump on every exit. Looks like a
> double delete problem to me, but I don't see an obvious cause.
>
> [...]
>
> This happens with text2skin 0.0.6 and 0.0.8pre1, both under VDR 1.3.11.

I almost believe this is something that has to do with the way your compiler 
cleans up static objects. What version of gcc are you using?

And, please try if the attached patch changes the behaviour in any way.

Greetings,
Sascha
diff -Nru text2skin/status.c text2skin.test/status.c
--- text2skin/status.c	2004-06-12 21:17:06.000000000 +0200
+++ text2skin.test/status.c	2004-08-02 19:49:31.226483768 +0200
@@ -4,9 +4,11 @@
  
 #include "status.h"
 
-cText2SkinStatus cText2SkinStatus::mStatus;
+cText2SkinStatus Text2SkinStatus;
+cText2SkinStatus *cText2SkinStatus::mStatus;;
 
 cText2SkinStatus::cText2SkinStatus(void) {
+	mStatus = this;
 	mReplayMode = replayNone;
 }
 
diff -Nru text2skin/status.h text2skin.test/status.h
--- text2skin/status.h	2004-06-12 21:17:06.000000000 +0200
+++ text2skin.test/status.h	2004-08-02 19:49:59.687157088 +0200
@@ -10,17 +10,19 @@
 
 class cText2SkinStatus: public cStatus {
 private:
-	static cText2SkinStatus mStatus;
+	static cText2SkinStatus *mStatus;
 
 	eReplayMode mReplayMode;
 
 protected:
-	cText2SkinStatus(void);
-
 	virtual void Replaying(const cControl *Control, const char *Name);
 
 public:
-	static eReplayMode ReplayMode(void) { return mStatus.mReplayMode; }
+	cText2SkinStatus(void);
+
+	static eReplayMode ReplayMode(void) { return mStatus->mReplayMode; }
 };
 
+extern cText2SkinStatus Text2SkinStatus;
+
 #endif // VDR_TEXT2SKIN_STATUS_H

Home | Main Index | Thread Index