Is it just me or the newly released rotor plugin for vdr 1.7.9 needs the following patch to the plugin itself in order to run (although it compiles fine without it) If the author reads these lines I would love to know why...
--- rotor.c.old 2006-06-14 23:44:27.000000000 +0200 +++ rotor.c 2006-06-14 23:46:43.000000000 +0200 @@ -96,7 +96,8 @@ continue; if ((diseqc=Diseqcs.Get(source->Code(),12000,'h')) || (diseqc=Diseqcs.Get(source->Code(),12000,'v')) || (diseqc=Diseqcs.Get(source->Code(),12000,'l')) || (diseqc=Diseqcs.Get(source->Code(),12000,'r'))) { - char *c=strdup(diseqc->Commands()); + char *commandstring=strdup(diseqc->Commands()); + char *c=commandstring; while (c = strchr(c, '[')) { char *e = strchr(++c, ']'); @@ -131,7 +132,7 @@ break; } } - free(c); + free(commandstring); } cRotorPos *p = RotorPositions.GetfromSource(source->Code()); if (p==RotorPositions.First())
Hello,
ACK: this was clearly a bug ;-)
martinez@embl.de a écrit :
I am not the author (nor even a user) but you are absolutely right. You must free the pointer as returned by strdup; not one that you have modified or incremented :( So you need to keep a virgin copy of the pointer as you have done.
Cheers, Chris