The pager module will cause a segv, following these steps:
1) enlightenment_remote -desks-set 3 2
2) Click in either "Desktop 2,0" or "Desktop 2,1" (right most column)
3) enlightenment_remote -desks-set 2 3 (boom!!)
With the change in the number of desks, the "current" desk selected in step #2 gets removed and a new desk is selected to replace it as the "current" one (e_desk.c). In the above example, gdb reports that the new "current" desk is "Desktop 1,2".
The pager module, when deleting superfluous desks, which in the above case includes the "current" one, tries to find the new "current" desk, but is trying to do so before it has created the new desks. This results in a null pointer return from _pager_face_desk_find at line 1476.
The attached patch (tested!) reorders the code so that new pager desks are added before the superfluous ones are deleted, ensuring that the pager has created the "current" pager desk by the time it goes searching for it.
Regards!
David
pagersegvfix.patch
Description: Binary data