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
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.
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.