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> 2002-08-09 Pavel Roskin <proski@gnu.org>
* ext.c (exec_extension): Eliminate unused argument. * 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) void delete_select_channel (int fd)
{ {
SelectList *p = select_list; SelectList *p = select_list;
SelectList *prev = 0; SelectList *p_prev = 0;
SelectList *p_next;
while (p){ while (p) {
if (p->fd == fd){ if (p->fd == fd) {
if (prev) p_next = p->next;
prev->next = p->next;
if (p_prev)
p_prev->next = p_next;
else else
select_list = p->next; select_list = p_next;
g_free (p); g_free (p);
p = p_next;
continue;
} }
prev = p;
p_prev = p;
p = p->next; p = p->next;
} }
} }