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

Attachment: 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: 

Reply via email to