SourceCodeManagerUtilities.st
changeset 3579 d175474155c8
parent 3551 e8feddd829f9
child 3591 d86841bb0d5c
--- a/SourceCodeManagerUtilities.st	Tue Jun 10 13:44:24 2014 +0200
+++ b/SourceCodeManagerUtilities.st	Tue Jun 10 13:53:55 2014 +0200
@@ -1998,15 +1998,28 @@
 
             self activityNotification:'comparing...'.
 
-            brwsr := (UserPreferences versionDiffViewerClass)
-                  openOnClass:classToCompare
-                  labelA:('Repository: ' , revString)
-                  sourceA:comparedSource
-                  labelB:('Current: (based on: ' , thisRevString , ')')
-                  sourceB:currentSource
-                  title:('Comparing ' , classToCompare name)
-                  ifSame:[versionsAreTheSame := true].
-
+            ChangeSet invalidChangeChunkError handle:[:ex |
+                |answer|
+
+                answer := Dialog 
+                            confirm:(resources 
+                                stringWithCRs:'An invalid change chunk was encountered when reading the source of %1.\This may be due to a currupted source file (or source file was modified/updated in the meantime, without recompilation).\\Proceed in debugger?'
+                                with:aClass)
+                            yesLabel:(resources string:'Debug')
+                            noLabel:(resources string:'Cancel')
+                            initialAnswer:false.
+                answer ifTrue:[ex reject].
+                AbortOperationRequest raise.
+            ] do:[
+                brwsr := (UserPreferences versionDiffViewerClass)
+                      openOnClass:classToCompare
+                      labelA:('Repository: ' , revString)
+                      sourceA:comparedSource
+                      labelB:('Current: (based on: ' , thisRevString , ')')
+                      sourceB:currentSource
+                      title:('Comparing ' , classToCompare name)
+                      ifSame:[versionsAreTheSame := true].
+            ].
             versionsAreTheSame ifFalse:[
                 brwsr classChangeSet 
                     classBeingCompared:classToCompare;
@@ -3991,10 +4004,10 @@
 !SourceCodeManagerUtilities class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.302 2014-05-08 14:19:35 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.303 2014-06-10 11:53:55 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.302 2014-05-08 14:19:35 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.303 2014-06-10 11:53:55 cg Exp $'
 ! !