Pidgin Forum
Plugin zum Ersetzen des eigenen Texts - Druckversion

+- Pidgin Forum (https://forum.pidgin-im.de)
+-- Forum: Hilfe-Bereich (https://forum.pidgin-im.de/forumdisplay.php?fid=4)
+--- Forum: Development (https://forum.pidgin-im.de/forumdisplay.php?fid=16)
+--- Thema: Plugin zum Ersetzen des eigenen Texts (/showthread.php?tid=1560)



Plugin zum Ersetzen des eigenen Texts - sunspot - 02.03.2012

Hallo!

Ich habe gerade angefangen an einem Plugin für Pidgin zu arbeiten.
Dieses soll zunächst den Text desjenigen, der eine Nachricht abschickt schon vorher durch einen anderen Text ersetzen.
Bei meinem aktuellen Plugin klappt das auch erst einmal, jedoch stürzt Pidgin nach mehrmaligem Senden einer Nachricht ab.

So sieht meine Callback-Funktion für das Signal "sending-im-msg" aus:

Code:
static gboolean sending_im_msg_cb(PurpleAccount *account, const char *receiver, char **message){

       //Neue Nachricht erstellen:
       char *msg = (char *)malloc(6);
       memset(msg, 0, 6);
       strcpy(msg,"hallo");

       //Speicher der alten Nachricht freigeben:
       free(*message);

       //Auf neue Nachricht zeigen:
       *message = msg;

       return TRUE;
}

Ich habe den Verdacht, dass ich Speicher falsch alloziere oder freigebe.
Könntet ihr mir sagen, wie das richtig geht?

EDIT von Freakazoid: Ich habe den Code in einen Code-Block gesetzt.



RE: Plugin zum Ersetzen des eigenen Texts - blubby - 02.03.2012

hmm, ich versteh zwar nix vom Coden, aber ich weiß, dass Pidgin ein Text Replacement Plugin mitliefert. Entweder schaust du dir mal an, wie das gemacht ist, oder du benutzt gleich das Smile

--blubby


RE: Plugin zum Ersetzen des eigenen Texts - Freakazoid - 03.03.2012

Ich sehe spontan keinen Fehler, der einen Absturz verursachen würde.

Aber du solltest:
  • einen Debugger verwenden,
  • nichts zurückgeben und
  • die übergebenen Parameter überprüfen (falls **message oder *message NULL ist, stürzt deine Funktion ab).



RE: Plugin zum Ersetzen des eigenen Texts - sunspot - 05.03.2012

Vielen Dank für eure Tipps!

Ich habe die Überprüfung eingebaut und eine void-Funktion daraus gemacht. Später habe ich gemerkt, dass eine von mir als nebensächlich abgestempelte Sache Pidgin zum Absturz gebracht hat.