improvements in the memory deallocation in day_edit_item()
This commit is contained in:
parent
3139a894c2
commit
ae24e6ccc3
44
src/day.c
44
src/day.c
@ -1,4 +1,4 @@
|
|||||||
/* $calcurse: day.c,v 1.12 2006/12/08 08:40:19 culot Exp $ */
|
/* $calcurse: day.c,v 1.13 2006/12/14 08:26:24 culot Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calcurse - text-based organizer
|
* Calcurse - text-based organizer
|
||||||
@ -406,7 +406,7 @@ void day_edit_item(int year, int month, int day, int item_num, int colr)
|
|||||||
recur_apoint_llist_node_t *ra, *ra_new;
|
recur_apoint_llist_node_t *ra, *ra_new;
|
||||||
long newtime = 0;
|
long newtime = 0;
|
||||||
const long date = date2sec(year, month, day, 0, 0);
|
const long date = date2sec(year, month, day, 0, 0);
|
||||||
int i, ch = 0, valid_date = 0, newfreq = 0, date_entered = 0;
|
int cancel, i, ch = 0, valid_date = 0, newfreq = 0, date_entered = 0;
|
||||||
int newmonth, newday, newyear;
|
int newmonth, newday, newyear;
|
||||||
int nb_item[MAX_TYPES];
|
int nb_item[MAX_TYPES];
|
||||||
unsigned hr, mn;
|
unsigned hr, mn;
|
||||||
@ -446,7 +446,6 @@ void day_edit_item(int year, int month, int day, int item_num, int colr)
|
|||||||
|
|
||||||
switch (p->type) {
|
switch (p->type) {
|
||||||
case RECUR_EVNT:
|
case RECUR_EVNT:
|
||||||
rpt = (struct rpt_s *) malloc(sizeof(struct rpt_s));
|
|
||||||
re = recur_get_event(date, nb_item[RECUR_EVNT - 1]);
|
re = recur_get_event(date, nb_item[RECUR_EVNT - 1]);
|
||||||
rpt = re->rpt;
|
rpt = re->rpt;
|
||||||
status_mesg(msg_event_recur, choice_event_recur);
|
status_mesg(msg_event_recur, choice_event_recur);
|
||||||
@ -458,7 +457,6 @@ void day_edit_item(int year, int month, int day, int item_num, int colr)
|
|||||||
ch = DESC;
|
ch = DESC;
|
||||||
break;
|
break;
|
||||||
case RECUR_APPT:
|
case RECUR_APPT:
|
||||||
rpt = (struct rpt_s *) malloc(sizeof(struct rpt_s));
|
|
||||||
ra = recur_get_apoint(date, nb_item[RECUR_APPT - 1]);
|
ra = recur_get_apoint(date, nb_item[RECUR_APPT - 1]);
|
||||||
rpt = ra->rpt;
|
rpt = ra->rpt;
|
||||||
status_mesg(msg_recur, choice_recur);
|
status_mesg(msg_recur, choice_recur);
|
||||||
@ -477,6 +475,7 @@ void day_edit_item(int year, int month, int day, int item_num, int colr)
|
|||||||
while (!valid_date) {
|
while (!valid_date) {
|
||||||
timestr = day_edit_time(p->start, colr);
|
timestr = day_edit_time(p->start, colr);
|
||||||
sscanf(timestr, "%u:%u", &hr, &mn);
|
sscanf(timestr, "%u:%u", &hr, &mn);
|
||||||
|
free(timestr);
|
||||||
newtime = update_time_in_date(p->start, hr, mn);
|
newtime = update_time_in_date(p->start, hr, mn);
|
||||||
if (newtime < p->start + p->appt_dur) {
|
if (newtime < p->start + p->appt_dur) {
|
||||||
p->start = newtime;
|
p->start = newtime;
|
||||||
@ -492,6 +491,7 @@ void day_edit_item(int year, int month, int day, int item_num, int colr)
|
|||||||
timestr = day_edit_time(
|
timestr = day_edit_time(
|
||||||
p->start + p->appt_dur, colr);
|
p->start + p->appt_dur, colr);
|
||||||
sscanf(timestr, "%u:%u", &hr, &mn);
|
sscanf(timestr, "%u:%u", &hr, &mn);
|
||||||
|
free(timestr);
|
||||||
newtime = update_time_in_date(
|
newtime = update_time_in_date(
|
||||||
p->start + p->appt_dur, hr, mn);
|
p->start + p->appt_dur, hr, mn);
|
||||||
if (newtime > p->start) {
|
if (newtime > p->start) {
|
||||||
@ -509,33 +509,40 @@ void day_edit_item(int year, int month, int day, int item_num, int colr)
|
|||||||
break;
|
break;
|
||||||
case REPT:
|
case REPT:
|
||||||
while ( (ch != 'D') && (ch != 'W') && (ch != 'M')
|
while ( (ch != 'D') && (ch != 'W') && (ch != 'M')
|
||||||
&& (ch != 'Y') && (ch != ESCAPE) ) {
|
&& (ch != 'Y') ) {
|
||||||
status_mesg(mesg_type_1, mesg_type_2);
|
status_mesg(mesg_type_1, mesg_type_2);
|
||||||
typestr = (char *) malloc(sizeof(char));
|
typestr = (char *) malloc(sizeof(char));
|
||||||
*typestr = recur_def2char(rpt->type);
|
*typestr = recur_def2char(rpt->type);
|
||||||
updatestring(swin, colr, &typestr, 0, 1);
|
cancel = updatestring(swin, colr, &typestr, 0, 1);
|
||||||
ch = toupper(*typestr);
|
ch = toupper(*typestr);
|
||||||
|
free(typestr);
|
||||||
|
if (cancel)
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (ch == ESCAPE)
|
|
||||||
return;
|
|
||||||
else
|
|
||||||
rpt->type = recur_char2def(ch);
|
|
||||||
while (newfreq == 0) {
|
while (newfreq == 0) {
|
||||||
status_mesg(mesg_freq_1, "");
|
status_mesg(mesg_freq_1, "");
|
||||||
freqstr = (char *) malloc(MAX_LENGTH);
|
freqstr = (char *) malloc(MAX_LENGTH);
|
||||||
sprintf(freqstr, "%d", rpt->freq);
|
sprintf(freqstr, "%d", rpt->freq);
|
||||||
updatestring(swin, colr, &freqstr, 0, 1);
|
cancel = updatestring(swin, colr, &freqstr, 0, 1);
|
||||||
newfreq = atoi(freqstr);
|
newfreq = atoi(freqstr);
|
||||||
if (newfreq == 0) {
|
free(freqstr);
|
||||||
status_mesg(mesg_wrong_freq, enter_str);
|
if (cancel)
|
||||||
wgetch(swin);
|
return;
|
||||||
} else
|
else {
|
||||||
rpt->freq = newfreq;
|
if (newfreq == 0) {
|
||||||
|
status_mesg(mesg_wrong_freq, enter_str);
|
||||||
|
wgetch(swin);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
while (!date_entered) {
|
while (!date_entered) {
|
||||||
status_mesg(mesg_until_1, "");
|
status_mesg(mesg_until_1, "");
|
||||||
timestr = date_sec2date_str(rpt->until);
|
timestr = date_sec2date_str(rpt->until);
|
||||||
updatestring(swin, colr, ×tr, 0, 1);
|
cancel = updatestring(swin, colr, ×tr, 0, 1);
|
||||||
|
if (cancel) {
|
||||||
|
free(timestr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (strlen(timestr) == 1 &&
|
if (strlen(timestr) == 1 &&
|
||||||
strncmp(timestr, "0", 1) == 0 ) {
|
strncmp(timestr, "0", 1) == 0 ) {
|
||||||
rpt->until = 0;
|
rpt->until = 0;
|
||||||
@ -564,6 +571,9 @@ void day_edit_item(int year, int month, int day, int item_num, int colr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(timestr);
|
||||||
|
rpt->freq = newfreq;
|
||||||
|
rpt->type = recur_char2def(ch);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
day_erase_item(date, item_num, 1);
|
day_erase_item(date, item_num, 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user