Menu

#432 Error on closing unsaved files...

open
nobody
None
5
2012-09-26
2004-10-28
No

The following error occured in version 4.9.9.0:
Access violation at address 00004950. Read of address
00004950 (at address 0x00004950)

Please include a description of what you were doing
before the error occured (please give as much
precisions as possible) :

State information follows:
Stack trace:


005805DD (0017F5DD): ShowExceptionInfo
(ExceptionsAnalyzer - 557)
005807D3 (0017F7D3):
TExceptionsAnalyzer.GlobalExceptionHandler
(ExceptionsAnalyzer - 565)
004B2AB9 (000B1AB9): TCustomSynEdit.UpdateCaret
(SynEdit - 3865)
004B5A3F (000B4A3F): TCustomSynEdit.InitializeCaret
(SynEdit - 5690)
00554ECB (00153ECB): TProjUnit.Destroy (project - 238)
0055CAC3 (0015BAC3): TUnitList.Remove (project - 2043)
0055A424 (00159424): TProject.Remove (project - 1315)
00575550 (00174550): TMainForm.actUnitRemoveExecute
(main - 3239)
00581D82 (00180D82): (devcpp - 196)
00581DA0 (00180DA0): (devcpp - 196)
00581844 (00180844): (devcpp - 116)

Discussion

  • Stefan Graupner

    Stefan Graupner - 2004-11-11

    Logged In: YES
    user_id=890928

    I did create a new cpp file and wrote some code into it...
    Then i realized that it wouldn't be a good program and
    closed the file(unsaved)...
    And then it happened

    /-\

     
  • Alex Yoon Jong Joh

    Logged In: YES
    user_id=301445

    To figure out this problem, i think the following 3 lines from
    line 2194 should me comment.

    main.pas : line 2870

    if InProject and Assigned(fProject) then begin
    res:=fProject.FolderNodeFromName('Resources');
    NewUnit := fProject.AddUnit(fname, res, True);
    NewUnit.Editor := NewEditor;
    end;

    ====
    line 2194
    if not e.InProject then
    begin
    dmMain.AddtoHistory(e.FileName);
    FreeAndNil(e);
    end
    else
    begin
    // if e.IsRes or (not Assigned(fProject)) then
    // FreeAndNil(e)
    // else
    if assigned(fProject) then
    fProject.CloseUnit(fProject.Units.Indexof(e));
    end;
    ===

    When I followed creating steps between source files and
    resource files, both were handled differently. I don't know
    why this should handle differently.

    However, the crash of this bug happended at line 2196
    because the resouce file is in the project file and it tried to
    destroy object from reference pointer.

    From the first condition, "if not e.InProject then", it filtered
    whether current file is in project or not. So, no matter what a
    source is header file, cpp file, or resource file will be released
    object from this condition.

    The other condition, "else", means that the file is in TProject
    object. It MUST RELEASE member variable, "fEditor", from
    inside of object. But, in case of resource file, it tried to
    release the object from outside with only reference value.

    ====
    No exception for resource file. In case of resource file, all unit
    will be released from here.
    "if e.IsRes or (not Assigned(fProject)) then FreeAndNil(e)".
    This is why the crash happened.
    ===

    My fundamental question is why resouce file and unit files
    should be handle differently instead of going through the sam
    e procedure for creating new unit and setting some values for
    resource file.

     
  • Alex Yoon Jong Joh

    Logged In: YES
    user_id=301445

    SORRY!! I POSTED WRONG PLACE.

     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.