ID:               48052
 User updated by:  ralph at smashlabs dot com
 Reported By:      ralph at smashlabs dot com
 Status:           Bogus
 Bug Type:         SPL related
 Operating System: *
 PHP Version:      5.3, 6CVS (2009-04-25)
 Assigned To:      colder
 New Comment:

Thats fine, and that works.

I guess this needs to be documented inside of setIteratorMode(), I
would have never guessed that flags are replaced, my initial assumption
would be that they are OR'd with the existing flags.

Thanks for clearing this up.
-ralph


Previous Comments:
------------------------------------------------------------------------

[2009-05-02 13:29:36] col...@php.net

The reason is that setIteratorMode replaces the iterator flags
entirely, so you need to specify the order of iteration as well if you
want to change the KEEP/DELETE.


Since you use a stack, simply use:
SplDoublyLinkedList:: IT_MODE_DELETE |
SplDoublyLinkedList::IT_MODE_LIFO



------------------------------------------------------------------------

[2009-04-22 16:50:24] ralph at smashlabs dot com

Description:
------------
Attempting to change the IteratorMode throws an exception.

The is probably due to the code that changes the LIFO/FIFO ordering
that is also settable via the inherited method of
SplDoublyLinkedList::setIteratorMode().



Reproduce code:
---------------
<?php

$s = new SPLStack(); 
$s->setIteratorMode(SplDoublyLinkedList::IT_MODE_DELETE);

Expected result:
----------------
Do not throw exception on the following use cases:

->setIteratorMode(SplDoublyLinkedList::IT_MODE_DELETE)
->setIteratorMode(SplDoublyLinkedList::IT_MODE_KEEP)

Actual result:
--------------
PHP Fatal error:  Uncaught exception 'RuntimeException' with message
'Iterators' LIFO/FIFO modes for SplStack/SplQueue objects are frozen' in
path/to/test-splstack.php:4
Stack trace:
#0 path/to/test-splstack.php(4):
SplDoublyLinkedList->setIteratorMode(1)
#1 {main}
  thrown in path/to/test-splstack.php on line 4


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=48052&edit=1

Reply via email to