Hello,

Eplayer would segfault if you tried to seek when there was no track
selected.  (Eg just run eplayer and hit the seek buttons)

(gdb) run
Starting program: /usr/local/bin/eplayer
[New Thread 16384 (LWP 4139)]
[New Thread 32769 (LWP 4140)]
[New Thread 16386 (LWP 4141)]
 
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 4139)]
0x0804c14d in _eplayer_seek_timer (data=0x8052190) at callbacks.c:422
422             new_pos = pli->current_pos + player->flags.seek_dir;
(gdb) bt
#0  0x0804c14d in _eplayer_seek_timer (data=0x8052190) at
callbacks.c:422
#1  0x4014eafe in _ecore_timer_call (when=1076559873.7694211) at
ecore_timer.c:195
#2  0x4014dd7c in _ecore_main_loop_iterate_internal (once_only=0) at
ecore_main.c:394
#3  0x4014d63c in ecore_main_loop_begin () at ecore_main.c:49
#4  0x0804b547 in main (argc=0, argv=0x4015030c) at eplayer.c:346
#5  0x405d77a7 in __libc_start_main () from /lib/libc.so.6
(gdb) quit


The attached patch should fix this.

Thanks,
dan

Index: callbacks.c
===================================================================
RCS file: /cvsroot/enlightenment/misc/eplayer/src/callbacks.c,v
retrieving revision 1.48
diff -u -r1.48 callbacks.c
--- callbacks.c	8 Feb 2004 11:55:26 -0000	1.48
+++ callbacks.c	12 Feb 2004 04:25:48 -0000
@@ -419,6 +419,9 @@
 	PlayListItem *pli = playlist_current_item_get(player->playlist);
 	int new_pos;
 
+    if (!pli)
+        return 0;
+
 	new_pos = pli->current_pos + player->flags.seek_dir;
 
 	if (new_pos <= 0)

Reply via email to