martin wrote:
Hi,

implemented the following, but it did not solve the issue :-(


timers.c
cTimer::~cTimer()
{
  if(aux) free(aux);
}

..

  lifetime     = Timer.lifetime;
  strncpy(file, Timer.file, sizeof(file));
  if (aux) free(aux);
  aux = Timer.aux ? strdup(Timer.aux) : NULL;


Klaus's debugging statements did not work, as gcc refuses work ..

Sorry, that was a typo - I was in a hurry ;-)

It needs to be fprintf().

Anyway, Alexander Rieger just sent me a PM in which he noted that
the operator=() function needs to check whether this is an assignment
to "self".

Please try this:

Timer& cTimer::operator= (const cTimer &Timer)
{
  if (this != &Timer) {
     startTime    = Timer.startTime;
     stopTime     = Timer.stopTime;
     lastSetEvent = 0;
     recording    = Timer.recording;
     pending      = Timer.pending;
     inVpsMargin  = Timer.inVpsMargin;
     flags        = Timer.flags;
     channel      = Timer.channel;
     day          = Timer.day;
     weekdays     = Timer.weekdays;
     start        = Timer.start;
     stop         = Timer.stop;
     priority     = Timer.priority;
     lifetime     = Timer.lifetime;
     strncpy(file, Timer.file, sizeof(file));
     free(aux);
     aux = Timer.aux ? strdup(Timer.aux) : NULL;
     event = NULL;
     }
  return *this;
}


Klaus

_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

Reply via email to