PR# 11937 Error when copying source file to a directory

Problem Report Summary
Submitter: saunders
Category: EiffelStudio
Priority: Medium
Date: 2007/01/28
Class: Bug
Severity: Serious
Number: 11937
Release: EiffelStudio 6 (6.0.6.6309 GPL Edition)
Confidential: No
Status: Closed
Responsible:
Environment: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; MathPlayer 2.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.04506.30)
Synopsis: Error when copying source file to a directory

Description
I copied an eiffel class source file into a directory that represents one of the clusters in a project.  In earlier versions of EiffelStudio if I did this and then compiled the project the class would appear in the "Cluster" tool.  Now it does not.  I added the class as a feature to one of the other source files and recompiled and then the class appeared in the "Cluster" tool.  When I click on the class name int the cluster tool I get an "Internal Error" dialog box with this text:

******************************** Thread exception *****************************
In thread           Root thread            0x0 (thread id)
*******************************************************************************
-------------------------------------------------------------------------------
Class / Object      Routine                Nature of exception           Effect
-------------------------------------------------------------------------------
SMART_TEXT          on_text_fully_loaded @5
                                           Segmentation violation:
<0000000008BACC28>  (From TEXT_OBSERVER_MANAGER)
                                           Operating system signal.      Fail
-------------------------------------------------------------------------------
SMART_TEXT          on_text_fully_loaded @5
<0000000008BACC28>  (From TEXT_OBSERVER_MANAGER)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
SMART_TEXT          after_reading_idle_action @3
<0000000008BACC28>  (From TEXT)            Routine failure.              Fail
-------------------------------------------------------------------------------
SMART_TEXT          after_reading_idle_action @1
<0000000008BACC28>  (From CLICKABLE_TEXT)  Routine failure.              Fail
-------------------------------------------------------------------------------
SMART_TEXT          after_reading_idle_action @3
<0000000008BACC28>                         Routine failure.              Fail
-------------------------------------------------------------------------------
SMART_TEXT          finish_reading_string @26
<0000000008BACC28>  (From TEXT)            Routine failure.              Fail
-------------------------------------------------------------------------------
EV_NOTIFY_ACTION_SEQUENCE
                    call @21               
<0000000008B00640>  (From ACTION_SEQUENCE) Routine failure.              Fail
-------------------------------------------------------------------------------
EV_NOTIFY_ACTION_SEQUENCE
                    call @3                
<0000000008B00640>  (From EV_LITE_ACTION_SEQUENCE)
                                           Routine failure.              Fail
-------------------------------------------------------------------------------
EV_APPLICATION_IMP  process_event_queue @15
<0000000008B00480>  (From EV_APPLICATION_I)
                                           Routine failure.              Retry
===============================================================================
To Reproduce
Just follow what I described in the "Description" section.  This was on Windows XP SP2
Problem Report Interactions
From:larryl    Date:2007/01/29    Status: Closed    Download   
I changed TEXT_OBSERVER_MANAGER on_text_fully_loaded. Now we twin the arrayed list before looping. 
This bug is cause by a preivous bug fix (bug#11901). Because when {EB_EDITOR_COMMAND_CONTROLLER}.set_current_editor, it will remove text observer while on_text_fully_loaded is looping, this will make arrayed list items change.
I have commit my changes, I think it's correct.

From:manus_eiffel    Date:2007/01/29    Status: Analyzed    Download   
When running with preconditions, you get a precondition violation in `not_in_loop' tag from {EDITABLE_TEXT}.remove_observer. I've added a protection in {EB_EDITOR_COMMAND_CONTROLLER}.set_current_editor to not set the `current_editor' if it is the same and then everything works fine. I haven't committed anything because I'm not sure if this is the right thing and I haven't carefully looked at the previous commits to see why it is now showing up.