1
1

* key.c (delete_select_channel): Avoid using freed memory.

Этот коммит содержится в:
Pavel Roskin 2002-08-10 04:37:13 +00:00
родитель c46d1f590b
Коммит d0b31c1c81
2 изменённых файлов: 19 добавлений и 8 удалений

Просмотреть файл

@ -1,3 +1,7 @@
2002-08-10 Pavel Roskin <proski@gnu.org>
* key.c (delete_select_channel): Avoid using freed memory.
2002-08-09 Pavel Roskin <proski@gnu.org>
* ext.c (exec_extension): Eliminate unused argument.

Просмотреть файл

@ -109,17 +109,24 @@ void add_select_channel (int fd, select_fn callback, void *info)
void delete_select_channel (int fd)
{
SelectList *p = select_list;
SelectList *prev = 0;
while (p){
if (p->fd == fd){
if (prev)
prev->next = p->next;
SelectList *p_prev = 0;
SelectList *p_next;
while (p) {
if (p->fd == fd) {
p_next = p->next;
if (p_prev)
p_prev->next = p_next;
else
select_list = p->next;
select_list = p_next;
g_free (p);
p = p_next;
continue;
}
prev = p;
p_prev = p;
p = p->next;
}
}