[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kdevelop-bugs
Subject:    [Bug 142314] New: Opening SVN-controled folders in the Treeview,
From:       Achim Herwig <achim.herwig () wodca ! de>
Date:       2007-02-28 8:42:56
Message-ID: 20070228094255.142314.achim.herwig () wodca ! de
[Download RAW message or body]

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=142314         
           Summary: Opening SVN-controled folders in the Treeview, makes
                    kdevelop hang sometimes
           Product: kdevelop
           Version: 3.4.0
          Platform: SuSE RPMs
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: NOR
         Component: general
        AssignedTo: kdevelop-bugs kdevelop org
        ReportedBy: achim.herwig wodca de


Version:           3.4.0 (using KDE KDE 3.5.6)
Installed from:    SuSE RPMs
Compiler:          GCC 4.1 openSuSE 10.2
OS:                Linux

I built a debug version, attached to the process and could identify an infinite loop.
I already have a partial solution, it works for me with this:

Index: vcs/subversion/subversion_fileinfo.cpp
===================================================================
--- vcs/subversion/subversion_fileinfo.cpp      (Revision 637939)
+++ vcs/subversion/subversion_fileinfo.cpp      (Arbeitskopie)
 @ -80,6 +80,7  @
                        kdDebug(9036) << "METADATA : " << *it << ":" << ma[ *it ] << \
                endl;
                        if ( rx.search( *it ) == -1 ) return m_cachedDirEntries; // \
something is wrong ! :)  curIdx = lastIdx = rx.cap( 1 ).toInt();
+
                        while ( curIdx == lastIdx ) {
                                if ( rx.cap( 2 ) == "path" )
                                        path = ma[ *it ];
 @ -93,9 +94,11  @
                                        repos_prop_status = ma[ *it ].toInt();
                                else if ( rx.cap( 2      ) == "rev" )
                                        rev = ma[ *it ].toLong();
-                               ++it;
+                               if (++it == end)
+                                       break;
                                if ( rx.search( *it ) == -1 ) break; // something is \
wrong ! :)  curIdx = rx.cap( 1 ).toInt();
+                               kdDebug(9036) << "curIdx="<< curIdx << " rx.search( \
*it )="<<rx.search( *it )<<" *it="<<*it<<endl;  }
                        slotStatus(path, text_status, prop_status, repos_text_status, \
repos_prop_status, rev);  }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic