Hi Sven, Le 24/07/2019 à 17:05, Sven Van Caekenberghe a écrit : > Can you include the file that you are trying to load ?
Attached. It looks like issue come when saving the file. The UTF8 characters are not saved properly. The unix file command was indicating it is an utf8 but Emacs shows it was different. > > Also, the stack trace is very short. Yes, I saw that... I don't know why. I did not cut it. I got a longer one this time. But it is likely not the cause. > Are you sure XML parser is ready for Pharo 8 (i.e. are its tests green) ? My bad, I am using P7. But I don't know either about the full compatibility of the XMLParser version I am using, the one before compatibility break. It is now clear the is issue when saving. To write, I use WriteStream on String. Should it be different? Hilaire -- Dr. Geo http://drgeo.eu
test.fgeo
Description: application/drgeo
THERE_BE_DRAGONS_HERE ZnInvalidUTF8: Illegal continuation byte for utf-8 encoding 24 July 2019 5:26:33.315521 pm VM: unix - i686 - linux-gnu - CoInterpreter VMMaker.oscog-eem.2504 uuid: a00b0fad-c04c-47a6-8a11-5dbff110ac11 Jan 5 2019 StackToRegisterMappingCogit VMMaker.oscog-eem.2504 uuid: a00b0fad-c04c-47a6-8a11-5dbff110ac11 Jan 5 2019 VM: 201901051900 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Date: Sat Jan 5 20:00:11 2019 CommitHash: 7a3c6b64 Plugins: 201901051900 https://github.com/OpenSmalltalk/opensmalltalk-vm.git Image: Pharo7.0.2 [Build information: Pharo-7.0.2+build.152.sha.890f474a81f116ead0e68c8de77790aef4e9a752 (32 Bit)] ZnUTF8Encoder>>error: Receiver: a ZnUTF8Encoder Arguments and temporary variables: message: 'Illegal continuation byte for utf-8 encoding' Receiver's instance variables: a ZnUTF8Encoder ZnUTF8Encoder>>errorIllegalContinuationByte Receiver: a ZnUTF8Encoder Arguments and temporary variables: Receiver's instance variables: a ZnUTF8Encoder [ ((next := stream next ifNil: [ ^ self errorIncomplete ]) bitAnd: 2r11000000) == 2r10000000 ifTrue: [ code := (code bitShift: 6) + (next bitAnd: 2r00111111) ] ifFalse: [ ^ self errorIllegalContinuationByte ] ] in ZnUTF8Encoder>>nextCodePointFromStream: Receiver: a ZnUTF8Encoder Arguments and temporary variables: <<error during printing> Receiver's instance variables: a ZnUTF8Encoder SmallInteger(Integer)>>timesRepeat: Receiver: 2 Arguments and temporary variables: aBlock: [ ((next := stream next ifNil: [ ^ self errorIncomplete ]) bitAnd: 2r1...etc... count: 1 Receiver's instance variables: 2 ZnUTF8Encoder>>nextCodePointFromStream: Receiver: a ZnUTF8Encoder Arguments and temporary variables: stream: a ZnBufferedReadStream byte: 233 next: 116 code: 9 Receiver's instance variables: a ZnUTF8Encoder ZnUTF8Encoder(ZnCharacterEncoder)>>nextFromStream: Receiver: a ZnUTF8Encoder Arguments and temporary variables: stream: a ZnBufferedReadStream Receiver's instance variables: a ZnUTF8Encoder ZnCharacterReadStream>>nextElement Receiver: a ZnCharacterReadStream Arguments and temporary variables: Receiver's instance variables: stream: a ZnBufferedReadStream encoder: a ZnUTF8Encoder peeked: nil ZnCharacterReadStream(ZnEncodedReadStream)>>next Receiver: a ZnCharacterReadStream Arguments and temporary variables: Receiver's instance variables: stream: a ZnBufferedReadStream encoder: a ZnUTF8Encoder peeked: nil SAXDriver(XMLTokenizer)>>next Receiver: a SAXDriver Arguments and temporary variables: nextChar: nil Receiver's instance variables: stream: a ZnCharacterReadStream nestedStreams: nil entities: nil externalEntities: nil parameterEntities: nil parsingMarkup: false markedPosition: nil peekChar: nil validating: true nameBuffer: a WriteStream attributeBuffer: a WriteStream saxHandler: a XMLDOMParser scope: nil useNamespaces: false validateAttributes: false languageEnvironment: nil SAXDriver(XMLTokenizer)>>nextAttributeValue Receiver: a SAXDriver Arguments and temporary variables: delimiterChar: $" attributeValueStream: a WriteStream nextChar: $' nextPeek: $' referenceString: nil entity: nil entityValue: nil Receiver's instance variables: stream: a ZnCharacterReadStream nestedStreams: nil entities: nil externalEntities: nil parameterEntities: nil parsingMarkup: false markedPosition: nil peekChar: nil validating: true nameBuffer: a WriteStream attributeBuffer: a WriteStream saxHandler: a XMLDOMParser scope: nil useNamespaces: false validateAttributes: false languageEnvironment: nil SAXDriver(XMLTokenizer)>>nextAttributeInto:namespaces: Receiver: a SAXDriver Arguments and temporary variables: attributes: a Dictionary('color'->'Red' 'delta'->'(-26.338720500388376@ -22.481...etc... namespaces: a Dictionary() attrName: 'name' attrValue: nil Receiver's instance variables: stream: a ZnCharacterReadStream nestedStreams: nil entities: nil externalEntities: nil parameterEntities: nil parsingMarkup: false markedPosition: nil peekChar: nil validating: true nameBuffer: a WriteStream attributeBuffer: a WriteStream saxHandler: a XMLDOMParser scope: nil useNamespaces: false validateAttributes: false languageEnvironment: nil SAXDriver(XMLTokenizer)>>nextTag Receiver: a SAXDriver Arguments and temporary variables: tagName: 'point' attributes: a Dictionary('color'->'Red' 'delta'->'(-26.338720500388376@ -22.481...etc... nextChar: $n namespaces: a Dictionary() Receiver's instance variables: stream: a ZnCharacterReadStream nestedStreams: nil entities: nil externalEntities: nil parameterEntities: nil parsingMarkup: false markedPosition: nil peekChar: nil validating: true nameBuffer: a WriteStream attributeBuffer: a WriteStream saxHandler: a XMLDOMParser scope: nil useNamespaces: false validateAttributes: false languageEnvironment: nil SAXDriver(XMLTokenizer)>>nextNode Receiver: a SAXDriver Arguments and temporary variables: nextChar: $p Receiver's instance variables: stream: a ZnCharacterReadStream nestedStreams: nil entities: nil externalEntities: nil parameterEntities: nil parsingMarkup: false markedPosition: nil peekChar: nil validating: true nameBuffer: a WriteStream attributeBuffer: a WriteStream saxHandler: a XMLDOMParser scope: nil useNamespaces: false validateAttributes: false languageEnvironment: nil SAXDriver(XMLTokenizer)>>nextEntity Receiver: a SAXDriver Arguments and temporary variables: whitespace: ' ' Receiver's instance variables: stream: a ZnCharacterReadStream nestedStreams: nil entities: nil externalEntities: nil parameterEntities: nil parsingMarkup: false markedPosition: nil peekChar: nil validating: true nameBuffer: a WriteStream attributeBuffer: a WriteStream saxHandler: a XMLDOMParser scope: nil useNamespaces: false validateAttributes: false languageEnvironment: nil XMLDOMParser(SAXHandler)>>parseDocument Receiver: a XMLDOMParser Arguments and temporary variables: Receiver's instance variables: document: <?xml version="1.0" encoding="UTF-8" ?> <drgenius> <drgeo axes="Fals...etc... driver: a SAXDriver eod: false entity: <controls wheelX="True" wheelY="True" wheelZ="True"/> stack: an OrderedCollection(<?xml version="1.0" encoding="UTF-8" ?> <drgenius>...etc... incremental: false XMLDOMParser class(SAXHandler class)>>parseDocumentFrom:useNamespaces: Receiver: XMLDOMParser Arguments and temporary variables: aStream: a ZnCharacterReadStream aBoolean: false parser: a XMLDOMParser Receiver's instance variables: superclass: SAXHandler methodDict: a MethodDictionary(#characters:->XMLDOMParser>>#characters: #defaul...etc... format: 65542 layout: a FixedLayout organization: a ClassOrganization subclasses: nil name: #XMLDOMParser classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'XML-Parser' XMLDOMParser class>>parseDocumentFrom:useNamespaces: Receiver: XMLDOMParser Arguments and temporary variables: aStream: a ZnCharacterReadStream aBoolean: false Receiver's instance variables: superclass: SAXHandler methodDict: a MethodDictionary(#characters:->XMLDOMParser>>#characters: #defaul...etc... format: 65542 layout: a FixedLayout organization: a ClassOrganization subclasses: nil name: #XMLDOMParser classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'XML-Parser' XMLDOMParser class>>parseDocumentFrom: Receiver: XMLDOMParser Arguments and temporary variables: aStream: a ZnCharacterReadStream Receiver's instance variables: superclass: SAXHandler methodDict: a MethodDictionary(#characters:->XMLDOMParser>>#characters: #defaul...etc... format: 65542 layout: a FixedLayout organization: a ClassOrganization subclasses: nil name: #XMLDOMParser classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'XML-Parser' DrGeoXml>>loadFrom:for: Receiver: a DrGeoXml Arguments and temporary variables: stream: a ZnCharacterReadStream constructor: #newFullScreen: doc: nil instances: nil Receiver's instance variables: app: nil DrGeo class>>fullscreenOn: Receiver: DrGeo Arguments and temporary variables: stream: a ZnCharacterReadStream answer: nil Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#add:->DrGeo>>#add: #area->DrGeo>>#area #buildVi...etc... format: 65545 layout: a FixedLayout organization: a ClassOrganization subclasses: nil name: #DrGeo classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'DrGeoII-Core-App' DrGeo class>>openFigureThumbnail: Receiver: DrGeo Arguments and temporary variables: parentView: nil dialog: a DrGFileThumbnailDialog(275075072) named: Ouvrir une figure Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#add:->DrGeo>>#add: #area->DrGeo>>#area #buildVi...etc... format: 65545 layout: a FixedLayout organization: a ClassOrganization subclasses: nil name: #DrGeo classPool: a Dictionary() sharedPools: an OrderedCollection() environment: a SystemDictionary(lots of globals) category: #'DrGeoII-Core-App' DrGeoPresenter>>openFigureThumbnail Receiver: a DrGeoPresenter Arguments and temporary variables: Receiver's instance variables: model: nil tool: a DrGSelectTool gridStuck: false isCreateMultipleMode: false selectedTool: #move selection: nil app: a DrGeo resource: a DrGDirectoryLocal filename: nil controlsManager: a DrGUIControlsManager PluggableButtonMorph>>performAction: Receiver: a PluggableButtonMorph(181909760) Arguments and temporary variables: event: [(60@65) mouseUp 36250096 nil] Receiver's instance variables: bounds: (47.0@46.0) corner: (79.0@76.0) owner: a PanelMorph(1035815168) submorphs: an Array(an AlignmentMorph(688851968)) fullBounds: (47@46) corner: (79@76) color: (Color r: 0.29 g: 0.28800000000000003 b: 0.28800000000000003 alpha: 1.0)...etc... extension: a MorphExtension (424473600) [balloonText] [other: (mouseEntered -...etc... borderWidth: 1 borderColor: #simple model: a DrGeoPresenter label: an AlphaImageMorph(417859072) icon: nil getIconSelector: nil getStateSelector: #isTool: actionSelector: #openFigureThumbnail font: nil getLabelSelector: nil getMenuSelector: nil shortcutCharacter: nil askBeforeChanging: false triggerOnMouseDown: false offColor: nil onColor: nil feedbackColor: nil showSelectionFeedback: false allButtons: nil arguments: #(#open) argumentsProvider: nil argumentsSelector: nil enabled: true actionBlock: nil getColorSelector: nil getEnabledSelector: nil getFontSelector: nil labelMorph: an AlphaImageMorph(417859072) iconMorph: nil iconPosition: #left lastState: false [ :m | (m containsPoint: evt cursorPoint) ifTrue: [ m enabled ifTrue: [ m performAction: evt ] ] ] in PluggableButtonMorph>>mouseUp: Receiver: a PluggableButtonMorph(181909760) Arguments and temporary variables: evt: [(60@65) mouseUp 36250096 nil] all: an Array(a PluggableButtonMorph(49159680) a PluggableButtonMorph(181909760...etc... m: a PluggableButtonMorph(181909760) Receiver's instance variables: bounds: (47.0@46.0) corner: (79.0@76.0) owner: a PanelMorph(1035815168) submorphs: an Array(an AlignmentMorph(688851968)) fullBounds: (47@46) corner: (79@76) color: (Color r: 0.29 g: 0.28800000000000003 b: 0.28800000000000003 alpha: 1.0)...etc... extension: a MorphExtension (424473600) [balloonText] [other: (mouseEntered -...etc... borderWidth: 1 borderColor: #simple model: a DrGeoPresenter label: an AlphaImageMorph(417859072) icon: nil getIconSelector: nil getStateSelector: #isTool: actionSelector: #openFigureThumbnail font: nil getLabelSelector: nil getMenuSelector: nil shortcutCharacter: nil askBeforeChanging: false triggerOnMouseDown: false offColor: nil onColor: nil feedbackColor: nil showSelectionFeedback: false allButtons: nil arguments: #(#open) argumentsProvider: nil argumentsSelector: nil enabled: true actionBlock: nil getColorSelector: nil getEnabledSelector: nil getFontSelector: nil labelMorph: an AlphaImageMorph(417859072) iconMorph: nil iconPosition: #left lastState: false Array(SequenceableCollection)>>do: Receiver: an Array(a PluggableButtonMorph(49159680) a PluggableButtonMorph(181909760) a PluggableBut...etc... Arguments and temporary variables: aBlock: [ :m | (m containsPoint: evt cursorPoint) ifTrue: [ m enabled ifTr...etc... index: 2 Receiver's instance variables: an Array(a PluggableButtonMorph(49159680) a PluggableButtonMorph(181909760) a PluggableBut...etc... PluggableButtonMorph>>mouseUp: Receiver: a PluggableButtonMorph(181909760) Arguments and temporary variables: evt: [(60@65) mouseUp 36250096 nil] all: an Array(a PluggableButtonMorph(49159680) a PluggableButtonMorph(181909760...etc... Receiver's instance variables: bounds: (47.0@46.0) corner: (79.0@76.0) owner: a PanelMorph(1035815168) submorphs: an Array(an AlignmentMorph(688851968)) fullBounds: (47@46) corner: (79@76) color: (Color r: 0.29 g: 0.28800000000000003 b: 0.28800000000000003 alpha: 1.0)...etc... extension: a MorphExtension (424473600) [balloonText] [other: (mouseEntered -...etc... borderWidth: 1 borderColor: #simple model: a DrGeoPresenter label: an AlphaImageMorph(417859072) icon: nil getIconSelector: nil getStateSelector: #isTool: actionSelector: #openFigureThumbnail font: nil getLabelSelector: nil getMenuSelector: nil shortcutCharacter: nil askBeforeChanging: false triggerOnMouseDown: false offColor: nil onColor: nil feedbackColor: nil showSelectionFeedback: false allButtons: nil arguments: #(#open) argumentsProvider: nil argumentsSelector: nil enabled: true actionBlock: nil getColorSelector: nil getEnabledSelector: nil getFontSelector: nil labelMorph: an AlphaImageMorph(417859072) iconMorph: nil iconPosition: #left lastState: false PluggableButtonMorph(Morph)>>handleMouseUp: Receiver: a PluggableButtonMorph(181909760) Arguments and temporary variables: anEvent: [(60@65) mouseUp 36250096 nil] result: nil Receiver's instance variables: bounds: (47.0@46.0) corner: (79.0@76.0) owner: a PanelMorph(1035815168) submorphs: an Array(an AlignmentMorph(688851968)) fullBounds: (47@46) corner: (79@76) color: (Color r: 0.29 g: 0.28800000000000003 b: 0.28800000000000003 alpha: 1.0)...etc... extension: a MorphExtension (424473600) [balloonText] [other: (mouseEntered -...etc... borderWidth: 1 borderColor: #simple model: a DrGeoPresenter label: an AlphaImageMorph(417859072) icon: nil getIconSelector: nil getStateSelector: #isTool: actionSelector: #openFigureThumbnail font: nil getLabelSelector: nil getMenuSelector: nil shortcutCharacter: nil askBeforeChanging: false triggerOnMouseDown: false offColor: nil onColor: nil feedbackColor: nil showSelectionFeedback: false allButtons: nil arguments: #(#open) argumentsProvider: nil argumentsSelector: nil enabled: true actionBlock: nil getColorSelector: nil getEnabledSelector: nil getFontSelector: nil labelMorph: an AlphaImageMorph(417859072) iconMorph: nil iconPosition: #left lastState: false MouseButtonEvent>>sentTo: Receiver: [(60@65) mouseUp 36250096 nil] Arguments and temporary variables: