Mantis Bugtracker
  

Viewing Issue Advanced Details Jump to Notes ] View Simple ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0006434 [Squeak] Files minor have not tried 04-20-07 22:29 02-06-11 23:48
Reporter johnmci View Status public  
Assigned To cdegroot
Priority high Resolution fixed Platform
Status closed   OS
Projection none   OS Version
ETA none Fixed in Version 4.1 Product Version
  Product Build
Summary 0006434: nil does not understand sameAs: in StandardFileStream class>>retryWithGC:until:forFileNamed:
Description VM: Mac OS - a SmalltalkImage
Image: Squeak3.8.1 [latest update: 6747]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources
Trusted Dir /Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources
Untrusted Dir /foobar/tooBar/forSqueak/bogus/

UndefinedObject(Object)>>doesNotUnderstand:
    Receiver: nil
    Arguments and temporary variables:
        aMessage: sameAs: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/7pqobzch7up8b9k10floz52le/xmlData.xml'
    Receiver's instance variables:
nil

[] in StandardFileStream class>>retryWithGC:until:forFileNamed: {[:file | file name sameAs: fullName]}
    Arguments and temporary variables:
        execBlock: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[self primOpen: f writable: writeMode]}
        testBlock: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[:id | id notNil]}
        fullName: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/7pqobzch7up8b9k10floz52le/xmlData.xml'
        blockValue: nil
        foundIt: nil
        file: MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'

[] in Array(Collection)>>anySatisfy: {[:t2 | (t1 value: t2) ifTrue: [^ true]. nil]}
    Arguments and temporary variables:
        t1: [] in StandardFileStream class>>retryWithGC:until:forFileNamed: {[:file | file name sameAs: fullName]}
        t2: MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'

Array(SequenceableCollection)>>do:
    Receiver: #(MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/' MultiByteFileStream: '/Users/mauriziopaoluzi/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/SophieBook.spb' MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/sophie.changes')
    Arguments and temporary variables:
        t1: [] in Array(Collection)>>anySatisfy: {[:t2 | (t1 value: t2) ifTrue: [^ true]. nil]}
        t2: 1
        t3: 5
    Receiver's instance variables:
#(MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/' MultiByteFileStream: '/Users/mauriziopaoluzi/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/SophieBook.spb' MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/sophie.changes')

Array(Collection)>>anySatisfy:
    Receiver: #(MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/' MultiByteFileStream: '/Users/mauriziopaoluzi/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/SophieBook.spb' MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/sophie.changes')
    Arguments and temporary variables:
        t1: [] in StandardFileStream class>>retryWithGC:until:forFileNamed: {[:file | file name sameAs: fullName]}
        t2: MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'
    Receiver's instance variables:
#(MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/' MultiByteFileStream: '/Users/mauriziopaoluzi/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/private/tmp/SophieTutorialNumberOne/As We May Think TUTORIAL WORKBOOK.spbf/SophieBook.spb' MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/sophie.changes')

StandardFileStream class>>retryWithGC:until:forFileNamed:
    Receiver: StandardFileStream
    Arguments and temporary variables:
        execBlock: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[self primOpen: f writable: writeMode]}
        testBlock: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[:id | id notNil]}
        fullName: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/7pqobzch7up8b9k10floz52le/xmlData.xml'
        blockValue: nil
        foundIt: nil
        file: MultiByteFileStream: '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'
    Receiver's instance variables:
        superclass: FileStream
        methodDict: a MethodDictionary(#actAsExecutor->a CompiledMethod (1006) #asHtml->a CompiledMethod (1513) #ascii->a CompiledMethod (1389) #atEnd->a CompiledMethod (2883) #basicNext->a CompiledMethod (1011) #binary->a CompiledMethod (363) #close->a CompiledMethod (2020) #closed->a CompiledMethod (113) #compressFile->a CompiledMethod (2057) #defaultBrowserReadyWait->a CompiledMethod (2063) #directory->a CompiledMethod (2913) #directoryUrl->a CompiledMethod (2458) #ensureOpen->a CompiledMethod (3268) #file->a CompiledMethod (1515) #finalize->a CompiledMethod (65) #findString:->a CompiledMethod (4094) #findStringFromEnd:->a CompiledMethod (3333) #flush->a CompiledMethod (2183) #fullName->a CompiledMethod (3548) #getFileType->a CompiledMethod (3760) #insertLineFeeds->a CompiledMethod (21) #isBinary->a CompiledMethod (3246) #isDirectory->a CompiledMethod (1236) #isReadOnly->a CompiledMethod (3179) #localName->a CompiledMethod (2451) #modificationTime->a CompiledMethod (1158) #name->a CompiledMethod (3655) #next->a CompiledMethod (1447) #next:->a CompiledMethod (2105) #next:into:startingAt:->a CompiledMethod (1822) #next:putAll:startingAt:->a CompiledMethod (2787) #nextPut:->a CompiledMethod (3935) #nextPutAll:->a CompiledMethod (2001) #nextWordsInto:->a CompiledMethod (874) #open->a CompiledMethod (607) #open:forWrite:->a CompiledMethod (1405) #openReadOnly->a CompiledMethod (165) #padToEndWith:->a CompiledMethod (1548) #peek->a CompiledMethod (2941) #peekFor:->a CompiledMethod (1373) #peekLast->a CompiledMethod (612) #position->a CompiledMethod (430) #position:->a CompiledMethod (737) #post:target:url:ifError:->a CompiledMethod (3683) #post:url:ifError:->a CompiledMethod (2247) #primAtEnd:->a CompiledMethod (3513) #primBrowserReady->a CompiledMethod (269) #primClose:->a CompiledMethod (1429) #primCloseNoError:->a CompiledMethod (1953) #primDropRequestFileHandle:->a CompiledMethod (3444) #primDropRequestFileName:->a CompiledMethod (1178) #primFlush:->a CompiledMethod (2709) #primGetPosition:->a CompiledMethod (2603) #pr...etc...
        format: 146
        instanceVariables: #('name' 'fileID' 'buffer1')
        organization: ('open/close' close closed ensureOpen open open:forWrite: openReadOnly reopen)
('properties-setting' asHtml ascii binary getFileType insertLineFeeds isBinary isReadOnly readOnly readWrite setFileTypeToObject)
('access' directory directoryUrl file fullName isDirectory localName name peekFor: printOn: reset size)
('read, write, position' atEnd basicNext compressFile findString: findStringFromEnd: flush next next: next:into:startingAt: next:putAll:startingAt: nextPut: nextPutAll: nextWordsInto: padToEndWith: peek peekLast position position: readInto:startingAt:count: readOnlyCopy setToEnd skip: truncate truncate: upTo: upToEnd verbatim:)
('primitives' primAtEnd: primClose: primCloseNoError: primFlush: primGetPosition: primOpen:writable: primRead:into:startingAt:count: primSetPosition:to: primSize: primSizeNoError: primTruncate:to: primWrite:from:startingAt:count:)
('registry' register unregister)
('finalization' actAsExecutor finalize)
('browser requests' defaultBrowserReadyWait post:target:url:ifError: post:url:ifError: primBrowserReady primURLPost:data:semaIndex: primURLPost:target:data:semaIndex: primURLRequest:semaIndex: primURLRequest:target:semaIndex: primURLRequestDestroy: primURLRequestFileHandle: primURLRequestState: requestURL:target: requestURL:target:ifError: requestURLStream: requestURLStream:ifError: waitBrowserReadyFor:ifFail:)
('dnd requests' primDropRequestFileHandle: primDropRequestFileName: requestDropStream:)
('*Tweak-Hacks' modificationTime)
('*Sophie-System' requestDropStreamWithTranslatedName:)

        subclasses: #(CrLfFileStream MultiByteFileStream)
        name: #StandardFileStream
        classPool: a Dictionary(#Registry->a WeakRegistry(<this WeakRegistry is locked>; spac) )
        sharedPools: nil
        environment: nil
        category: #'Files-Kernel'

MultiByteFileStream(StandardFileStream)>>open:forWrite:
    Receiver: MultiByteFileStream: nil
    Arguments and temporary variables:
        fileName: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/7pqobzch7up8b9k10floz52le/xmlData.xml'
        writeMode: false
        f: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/7pqobzch7up8b9k10floz52le/xmlData.xml'
        id: nil
    Receiver's instance variables:
Steps To Reproduce
Additional Information We had this error reported in Sophie. It appears that in the following method.

retryWithGC: execBlock until: testBlock forFileNamed: fullName
    
    "See if we have a file with the given name"
    foundIt := Registry keys "hold on strongly for now"
        anySatisfy:[:file| file name sameAs: fullName].


Registry keys return the keys in the weak registry dictionary, and we start iterating over them in the anySatisfy:

Note how that '/Users/mauriziopaoluzi/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'
is listed in the walkback log when it prints the file block variable then it's not there and we get the nil DNU anySatisfy:
Attached Files  setFileNameBeforeRegister-JMM.1.cs.zip [^] (1,211 bytes) 10-10-07 17:46

- Relationships

- Notes
(0011234 - 52034 - 77777 - 80051 - 80051 - 80051 - 80051)
johnmci
10-02-07 21:10

MessageNotUnderstood: UndefinedObject>>sameAs:
'config2007040901swr'
1 October 2007 1:03:16 pm

VM: Mac OS - a SmalltalkImage
Image: Squeak3.8.1 [latest update: 6747]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /Applications/Sophie.app/Contents/Resources
Trusted Dir /Applications/Sophie.app/Contents/Resources
Untrusted Dir /foobar/tooBar/forSqueak/bogus/

UndefinedObject(Object)>>doesNotUnderstand:
    Receiver: nil
    Arguments and temporary variables:
        t1: sameAs: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
    Receiver's instance variables:
nil

[] in StandardFileStream class>>retryWithGC:until:forFileNamed: {[:t6 | t6 name sameAs: t3]}
    Arguments and temporary variables:
        t1: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[self primOpen: t3 writable: t2]}
        t2: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[:t4 | t4 notNil]}
        t3: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
        t4: nil
        t5: nil
        t6: MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'

[] in Array(Collection)>>anySatisfy: {[:t2 | (t1 value: t2) ifTrue: [^ true]. nil]}
    Arguments and temporary variables:
        t1: [] in StandardFileStream class>>retryWithGC:until:forFileNamed: {[:t6 | t6 name sameAs: t3]}
        t2: MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'

Array(SequenceableCollection)>>do:
    Receiver: #(MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/' MultiByteFileStream: '/Users/travencollins/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/SophieBook.spb')
    Arguments and temporary variables:
        t1: [] in Array(Collection)>>anySatisfy: {[:t2 | (t1 value: t2) ifTrue: [^ true]. nil]}
        t2: 3
        t3: 4
    Receiver's instance variables:
#(MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/' MultiByteFileStream: '/Users/travencollins/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/SophieBook.spb')

Array(Collection)>>anySatisfy:
    Receiver: #(MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/' MultiByteFileStream: '/Users/travencollins/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/SophieBook.spb')
    Arguments and temporary variables:
        t1: [] in StandardFileStream class>>retryWithGC:until:forFileNamed: {[:t6 | t6 name sameAs: t3]}
        t2: MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'
    Receiver's instance variables:
#(MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/' MultiByteFileStream: '/Users/travencollins/Library/Application Support/Sophie/library/Sophie NoteBook.spbf/SophieBook.spb' MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml' MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/SophieBook.spb')

StandardFileStream class>>retryWithGC:until:forFileNamed:
    Receiver: StandardFileStream
    Arguments and temporary variables:
        t1: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[self primOpen: t3 writable: t2]}
        t2: [] in MultiByteFileStream(StandardFileStream)>>open:forWrite: {[:t4 | t4 notNil]}
        t3: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
        t4: nil
        t5: nil
        t6: MultiByteFileStream: '/Applications/Sophie.app/Contents/Resources/resources/extensions/dialogs/xul/dialogokcancel.xml'
    Receiver's instance variables:
        superclass: FileStream
        methodDict: a MethodDictionary(#actAsExecutor->a CompiledMethod (1006) #asHtml->a CompiledMethod (1513) #ascii->a CompiledMethod (1389) #atEnd->a CompiledMethod (2883) #basicNext->a CompiledMethod (1011) #binary->a CompiledMethod (363) #close->a CompiledMethod (2020) #closed->a CompiledMethod (113) #compressFile->a CompiledMethod (2057) #defaultBrowserReadyWait->a CompiledMethod (2063) #directory->a CompiledMethod (2913) #directoryUrl->a CompiledMethod (2458) #ensureOpen->a CompiledMethod (3268) #file->a CompiledMethod (1515) #finalize->a CompiledMethod (65) #findString:->a CompiledMethod (4094) #findStringFromEnd:->a CompiledMethod (3333) #flush->a CompiledMethod (2183) #fullName->a CompiledMethod (3548) #getFileType->a CompiledMethod (3760) #insertLineFeeds->a CompiledMethod (21) #isBinary->a CompiledMethod (3246) #isDirectory->a CompiledMethod (1236) #isReadOnly->a CompiledMethod (3179) #localName->a CompiledMethod (2451) #modificationTime->a CompiledMethod (1158) #name->a CompiledMethod (3655) #next->a CompiledMethod (1447) #next:->a CompiledMethod (2105) #next:into:startingAt:->a CompiledMethod (1822) #next:putAll:startingAt:->a CompiledMethod (2787) #nextPut:->a CompiledMethod (3935) #nextPutAll:->a CompiledMethod (2001) #nextWordsInto:->a CompiledMethod (874) #open->a CompiledMethod (607) #open:forWrite:->a CompiledMethod (1405) #openReadOnly->a CompiledMethod (165) #padToEndWith:->a CompiledMethod (1548) #peek->a CompiledMethod (2941) #peekFor:->a CompiledMethod (1373) #peekLast->a CompiledMethod (612) #position->a CompiledMethod (430) #position:->a CompiledMethod (737) #post:target:url:ifError:->a CompiledMethod (3683) #post:url:ifError:->a CompiledMethod (2247) #primAtEnd:->a CompiledMethod (3513) #primBrowserReady->a CompiledMethod (269) #primClose:->a CompiledMethod (1429) #primCloseNoError:->a CompiledMethod (1953) #primDropRequestFileHandle:->a CompiledMethod (3444) #primDropRequestFileName:->a CompiledMethod (1178) #primFlush:->a CompiledMethod (2709) #primGetPosition:->a CompiledMethod (2603) #pr...etc...
        format: 146
        instanceVariables: #('name' 'fileID' 'buffer1')
        organization: ('open/close' close closed ensureOpen open open:forWrite: openReadOnly reopen)
('properties-setting' asHtml ascii binary getFileType insertLineFeeds isBinary isReadOnly readOnly readWrite setFileTypeToObject)
('access' directory directoryUrl file fullName isDirectory localName name peekFor: printOn: reset size)
('read, write, position' atEnd basicNext compressFile findString: findStringFromEnd: flush next next: next:into:startingAt: next:putAll:startingAt: nextPut: nextPutAll: nextWordsInto: padToEndWith: peek peekLast position position: readInto:startingAt:count: readOnlyCopy setToEnd skip: truncate truncate: upTo: upToEnd verbatim:)
('primitives' primAtEnd: primClose: primCloseNoError: primFlush: primGetPosition: primOpen:writable: primRead:into:startingAt:count: primSetPosition:to: primSize: primSizeNoError: primTruncate:to: primWrite:from:startingAt:count:)
('registry' register unregister)
('finalization' actAsExecutor finalize)
('browser requests' defaultBrowserReadyWait post:target:url:ifError: post:url:ifError: primBrowserReady primURLPost:data:semaIndex: primURLPost:target:data:semaIndex: primURLRequest:semaIndex: primURLRequest:target:semaIndex: primURLRequestDestroy: primURLRequestFileHandle: primURLRequestState: requestURL:target: requestURL:target:ifError: requestURLStream: requestURLStream:ifError: waitBrowserReadyFor:ifFail:)
('dnd requests' primDropRequestFileHandle: primDropRequestFileName: requestDropStream:)
('*Tweak-Hacks' modificationTime)
('*Sophie-System' requestDropStreamWithTranslatedName:)

        subclasses: #(CrLfFileStream MultiByteFileStream)
        name: #StandardFileStream
        classPool: a Dictionary(#Registry->a WeakRegistry(<this WeakRegistry is locked>; spac) )
        sharedPools: nil
        environment: nil
        category: #'Files-Kernel'

MultiByteFileStream(StandardFileStream)>>open:forWrite:
    Receiver: MultiByteFileStream: nil
    Arguments and temporary variables:
        t1: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
        t2: false
        t3: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
        t4: nil
    Receiver's instance variables:


MultiByteFileStream>>open:forWrite:
    Receiver: MultiByteFileStream: nil
    Arguments and temporary variables:
        t1: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
        t2: false
        t3: nil
    Receiver's instance variables:


MultiByteFileStream class(StandardFileStream class)>>isAFileNamed:
    Receiver: MultiByteFileStream
    Arguments and temporary variables:
        t1: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
        t2: nil
    Receiver's instance variables:
        superclass: StandardFileStream
        methodDict: a MethodDictionary(#accepts:->a CompiledMethod (1227) #ascii->a CompiledMethod (1533) #bareNext->a CompiledMethod (4061) #basicNext:->a CompiledMethod (1587) #basicNext:into:->a CompiledMethod (1627) #basicNextInto:->a CompiledMethod (3298) #basicNextPut:->a CompiledMethod (392) #basicNextPutAll:->a CompiledMethod (321) #basicPeek->a CompiledMethod (209) #basicPosition->a CompiledMethod (3118) #basicPosition:->a CompiledMethod (2533) #basicReadInto:startingAt:count:->a CompiledMethod (2917) #basicSetToEnd->a CompiledMethod (1297) #basicSkip:->a CompiledMethod (3420) #basicUpTo:->a CompiledMethod (3137) #basicVerbatim:->a CompiledMethod (371) #binary->a CompiledMethod (3) #convertStringFromCr:->a CompiledMethod (1350) #convertStringToCr:->a CompiledMethod (2933) #converter->a CompiledMethod (2049) #converter:->a CompiledMethod (3241) #detectLineEndConvention->a CompiledMethod (297) #doConversion->a CompiledMethod (2772) #fileIn->a CompiledMethod (291) #fileInEncodingName:->a CompiledMethod (1431) #fileOutClass:andObject:->a CompiledMethod (1402) #filterFor:->a CompiledMethod (3844) #lineEndConvention->a CompiledMethod (2067) #lineEndConvention:->a CompiledMethod (805) #next->a CompiledMethod (3236) #next:->a CompiledMethod (3195) #next:innerFor:->a CompiledMethod (832) #nextDelimited:->a CompiledMethod (1905) #nextMatchAll:->a CompiledMethod (3562) #nextPut:->a CompiledMethod (88) #nextPutAll:->a CompiledMethod (3390) #open:forWrite:->a CompiledMethod (3482) #peek->a CompiledMethod (3261) #peekFor:->a CompiledMethod (1285) #reset->a CompiledMethod (1442) #setConverterForCode->a CompiledMethod (3911) #skipSeparators->a CompiledMethod (1041) #skipSeparatorsAndPeekNext->a CompiledMethod (1962) #upTo:->a CompiledMethod (1119) #upToEnd->a CompiledMethod (2035) #wantsLineEndConversion->a CompiledMethod (3135) #wantsLineEndConversion:->a CompiledMethod (1594) )
        format: 152
        instanceVariables: #('converter' 'lineEndConvention' 'wantsLineEndConversion')
        organization: ('accessing' ascii binary converter converter: fileInEncodingName: lineEndConvention lineEndConvention: wantsLineEndConversion:)
('public' next next: nextDelimited: nextMatchAll: nextPut: nextPutAll: peek peekFor: skipSeparators skipSeparatorsAndPeekNext upTo: upToEnd)
('crlf private' bareNext convertStringFromCr: convertStringToCr: detectLineEndConvention doConversion next:innerFor: wantsLineEndConversion)
('private basic' basicNext: basicNext:into: basicNextInto: basicNextPut: basicNextPutAll: basicPeek basicPosition basicPosition: basicReadInto:startingAt:count: basicSetToEnd basicSkip: basicUpTo: basicVerbatim:)
('open/close' open:forWrite: reset)
('remnant' accepts: filterFor:)
('private' setConverterForCode)
('fileIn/Out' fileIn fileOutClass:andObject:)

        subclasses: nil
        name: #MultiByteFileStream
        classPool: a Dictionary(#Cr->$
 #CrLf->'
' #Lf->$
 #LineEndDefault->#lf #LineEndStrings->a Dictionary(#cr->'
' #crlf->'
' #lf->'
' ) #LookAheadCount->2048 )
        sharedPools: nil
        environment: a SystemDictionary(lots of globals)
        category: #'Multilingual-TextConversion'

FileStream class>>isAFileNamed:
    Receiver: FileStream
    Arguments and temporary variables:
        t1: '/private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml'
    Receiver's instance variables:
        superclass: ReadWriteStream
        methodDict: a MethodDictionary(#asBinaryOrTextStream->a CompiledMethod (591) #asUrl->a CompiledMethod (3493) #ascii->a CompiledMethod (918) #atEnd->a CompiledMethod (603) #binary->a CompiledMethod (1443) #close->a CompiledMethod (1716) #closed->a CompiledMethod (2023) #contents->a CompiledMethod (621) #contentsOfEntireFile->a CompiledMethod (188) #dataIsValid->a CompiledMethod (2755) #directoryEntry->a CompiledMethod (2496) #edit->a CompiledMethod (1596) #file->a CompiledMethod (3501) #fileIn->a CompiledMethod (366) #fileInObjectAndCode->a CompiledMethod (674) #fileIntoNewChangeSet->a CompiledMethod (594) #flush->a CompiledMethod (2119) #isFileStream->a CompiledMethod (2732) #localName->a CompiledMethod (3697) #longPrintOn:->a CompiledMethod (3834) #longPrintOn:limitedTo:indent:->a CompiledMethod (1348) #mimeType->a CompiledMethod (2420) #mimeTypes->a CompiledMethod (420) #name->a CompiledMethod (3591) #next->a CompiledMethod (1496) #next:->a CompiledMethod (1365) #nextPut:->a CompiledMethod (192) #nextPutAll:->a CompiledMethod (974) #position->a CompiledMethod (722) #position:->a CompiledMethod (3923) #printOn:->a CompiledMethod (3941) #readOnly->a CompiledMethod (2452) #readOnlyStream->a CompiledMethod (2306) #readWrite->a CompiledMethod (1378) #reopen->a CompiledMethod (2302) #reset->a CompiledMethod (697) #setToEnd->a CompiledMethod (1773) #size->a CompiledMethod (3031) #skip:->a CompiledMethod (2144) #text->a CompiledMethod (1204) #truncate:->a CompiledMethod (1766) #uri->a CompiledMethod (2954) #url->a CompiledMethod (226) #viewGZipContents->a CompiledMethod (2496) )
        format: 140
        instanceVariables: #('rwmode')
        organization: ('accessing' contents contentsOfEntireFile directoryEntry mimeTypes next next: nextPut: nextPutAll: size)
('testing' atEnd)
('positioning' position position: reset setToEnd skip: truncate:)
('printing' longPrintOn: longPrintOn:limitedTo:indent: printOn:)
('editing' edit viewGZipContents)
('file open/close' close closed flush reopen)
('file modes' ascii binary readOnly readOnlyStream readWrite text)
('file accessing' asUrl file localName name url)
('fileIn/Out' fileIn fileInObjectAndCode fileIntoNewChangeSet)
('converting' asBinaryOrTextStream)
('remote file compatibility' dataIsValid)
('*network-uri' uri)
('*sophie-resourceManager' isFileStream)
('*Sophie-Persistency' mimeType)

        subclasses: #(StandardFileStream)
        name: #FileStream
        classPool: a Dictionary()
        sharedPools: nil
        environment: nil
        category: nil

SophieResourceStorageFileDirectoryWithFolderAndZipped(SophieResourceStorageFileDirectoryZip)>>metaDataURI
    Receiver: a SophieResourceStorageFileDirectoryWithFolderAndZipped ('3806411e-64a6-4bb4-a85e-b3518326883c')
    Arguments and temporary variables:
        t1: file:///private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/xmlData.xml [^] [^]
        t2: nil
    Receiver's instance variables:
        rm: a SophieResourceManagerFolderPackage ('3806411e-64a6-4bb4-a85e-b3518326883c')
        deleteOldManifestDataName: nil
        resourceURI: nil
        tempURI: file:///private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/ [^] [^]
        filesInTempFolder: a Set('xmlData.xml')
        zipfileArchive: a ZipArchive
        zipfileStream: MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/SophieBook.spb'
        newOrAlteredFiles: nil

SophieResourceStorageFileDirectoryWithFolderAndZipped(SophieResourceStorageFileDirectory)>>getMetaDataReadStream
    Receiver: a SophieResourceStorageFileDirectoryWithFolderAndZipped ('3806411e-64a6-4bb4-a85e-b3518326883c')
    Arguments and temporary variables:
        t1: nil
        t2: nil
    Receiver's instance variables:
        rm: a SophieResourceManagerFolderPackage ('3806411e-64a6-4bb4-a85e-b3518326883c')
        deleteOldManifestDataName: nil
        resourceURI: nil
        tempURI: file:///private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/ [^] [^]
        filesInTempFolder: a Set('xmlData.xml')
        zipfileArchive: a ZipArchive
        zipfileStream: MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/SophieBook.spb'
        newOrAlteredFiles: nil

SophieResourceStorageFileDirectoryWithFolderAndZipped(SophieResourceStorage)>>readResourceMetadata:
    Receiver: a SophieResourceStorageFileDirectoryWithFolderAndZipped ('3806411e-64a6-4bb4-a85e-b3518326883c')
    Arguments and temporary variables:
        t1: a SophieResourceManagerFolderPackage ('3806411e-64a6-4bb4-a85e-b3518326883c')
        t2: nil
        t3: nil
        t4: nil
    Receiver's instance variables:
        rm: a SophieResourceManagerFolderPackage ('3806411e-64a6-4bb4-a85e-b3518326883c')
        deleteOldManifestDataName: nil
        resourceURI: nil
        tempURI: file:///private/var/tmp/folders.501/TemporaryItems/SophieTemp/el72lo9rpswy1hwawgv7rhrik/ [^] [^]
        filesInTempFolder: a Set('xmlData.xml')
        zipfileArchive: a ZipArchive
        zipfileStream: MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/SophieBook.spb'
        newOrAlteredFiles: nil

SophieResourceManagerFolderPackage(SophieResourceManager)>>resourceDictionary
    Receiver: a SophieResourceManagerFolderPackage ('3806411e-64a6-4bb4-a85e-b3518326883c')
    Arguments and temporary variables:

    Receiver's instance variables:
        resourceDictionary: nil
        book: a SophieBook (804) (nil)
        folders: nil
        storageManager: a SophieResourceStorageFileDirectoryWithFolderAndZipped ('3806411e-64a6-4bb4-a85e-b3518326883c')
        masterFolderId: nil
        recursiveLoading: nil
        uuidLookAsideDictionary: nil
        thumbNailCache: nil

SophieResourceManagerFolderPackage(SophieResourceManager)>>book:
    Receiver: a SophieResourceManagerFolderPackage ('3806411e-64a6-4bb4-a85e-b3518326883c')
    Arguments and temporary variables:
        t1: a SophieBook (804) (nil)
    Receiver's instance variables:
        resourceDictionary: nil
        book: a SophieBook (804) (nil)
        folders: nil
        storageManager: a SophieResourceStorageFileDirectoryWithFolderAndZipped ('3806411e-64a6-4bb4-a85e-b3518326883c')
        masterFolderId: nil
        recursiveLoading: nil
        uuidLookAsideDictionary: nil
        thumbNailCache: nil

SophieResourceManagerFolderPackage class(SophieResourceManager class)>>forBook:
    Receiver: SophieResourceManagerFolderPackage
    Arguments and temporary variables:
        t1: a SophieBook (804) (nil)
        t2: a SophieResourceManagerFolderPackage ('3806411e-64a6-4bb4-a85e-b3518326883c')
    Receiver's instance variables:
        superclass: SophieResourceManager
        methodDict: a MethodDictionary(#storageManager->a CompiledMethod (1783) )
        format: 146
        instanceVariables: nil
        organization: ('accessing' storageManager)

        subclasses: nil
        name: #SophieResourceManagerFolderPackage
        classPool: nil
        sharedPools: nil
        environment: a SystemDictionary(lots of globals)
        category: #'Sophie-ResourceManager'

SophieBook>>createFolderStorage
    Receiver: a SophieBook (804) (nil)
    Arguments and temporary variables:

    Receiver's instance variables:
        uuid: a SophieID('3806411e-64a6-4bb4-a85e-b3518326883c')
        id: nil
        spineManager: nil
        mainSpine: nil
        defaultLayoutTemplate: nil
        structureTemplate: nil
        variables: nil
        extent: nil
        bookModel: nil
        timelineManager: nil
        published: nil
        application: SophieApplication
        uuidForLinking: nil
        stickyManager: nil
        preferences: nil
        myEventMap: nil
        resourceManager: nil
        styleLibrary: nil
        templateLibrary: nil
        contentManager: nil
        markerManager: nil
        numberingManager: nil
        uri: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf
        eventTriggerManager: nil
        embeddedBooks: nil
        possibleURIForLinking: nil
        scriptManager: nil
        manifest: nil
        possibleManifestNumber: nil
        usageStatistic: nil

SophieBook>>readFromURI:
    Receiver: a SophieBook (804) (nil)
    Arguments and temporary variables:
        t1: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf
    Receiver's instance variables:
        uuid: a SophieID('3806411e-64a6-4bb4-a85e-b3518326883c')
        id: nil
        spineManager: nil
        mainSpine: nil
        defaultLayoutTemplate: nil
        structureTemplate: nil
        variables: nil
        extent: nil
        bookModel: nil
        timelineManager: nil
        published: nil
        application: SophieApplication
        uuidForLinking: nil
        stickyManager: nil
        preferences: nil
        myEventMap: nil
        resourceManager: nil
        styleLibrary: nil
        templateLibrary: nil
        contentManager: nil
        markerManager: nil
        numberingManager: nil
        uri: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf
        eventTriggerManager: nil
        embeddedBooks: nil
        possibleURIForLinking: nil
        scriptManager: nil
        manifest: nil
        possibleManifestNumber: nil
        usageStatistic: nil

[] in SophieBook class>>fromURI:application: {[t3 readFromURI: t1]}
    Arguments and temporary variables:
        t1: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf
        t2: SophieApplication
        t3: a SophieBook (804) (nil)

BlockContext>>ensure:
    Receiver: [] in SophieBook class>>fromURI:application: {[t3 readFromURI: t1]}
    Arguments and temporary variables:
        t1: [] in CursorWithMask(Cursor)>>showWhile: {[t2 show]}
        t2: nil
        t3: nil
    Receiver's instance variables:
        sender: BlockContext>>ensure:
        pc: 42
        stackp: 0
        nargs: 0
        startpc: 39
        home: SophieBook class>>fromURI:application:

CursorWithMask(Cursor)>>showWhile:
    Receiver: ((CursorWithMask
    extent: 16@16
    depth: 1
    fromArray: #(
        2r0
        2r1111111111111100000000000000000
        2r1000000000000100000000000000000
        2r100000000001000000000000000000
        2r10000000010000000000000000000
        2r1110011100000000000000000000
        2r111111000000000000000000000
        2r11110000000000000000000000
        2r11110000000000000000000000
        2r100101000000000000000000000
        2r1000100100000000000000000000
        2r10000110010000000000000000000
        2r100001111001000000000000000000
        2r1000111111110100000000000000000
        2r1111111111111100000000000000000
        2r0)
    offset: -1@-1) setMaskForm: (Form
    extent: 16@16
    depth: 1
    fromArray: #(
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111000000111110000000000000000
        2r1111111111111100000000000000000
        2r111111111111000000000000000000
        2r11111111110000000000000000000
        2r1111111100000000000000000000
        2r1111111100000000000000000000
        2r11111111110000000000000000000
        2r111111111111000000000000000000
        2r1111111111111100000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000)
    offset: 0@0))
    Arguments and temporary variables:
        t1: [] in SophieBook class>>fromURI:application: {[t3 readFromURI: t1]}
        t2: ((CursorWithMask
    extent: 16@16
    depth: 1
    fromArray: #(
        2r0
        2r1111111111111100000000000000000
        2r1000000000000100000000000000000
        2r100000000001000000000000000000
        2r10000000010000000000000000000
        2r1110011100000000000000000000
        2r111111000000000000000000000
        2r11110000000000000000000000
        2r11110000000000000000000000
        2r100101000000000000000000000
        2r1000100100000000000000000000
        2r10000110010000000000000000000
        2r100001111001000000000000000000
        2r1000111111110100000000000000000
        2r1111111111111100000000000000000
        2r0)
    offset: -1@-1) setMaskForm: (Form
    extent: 16@16
    depth: 1
    fromArray: #(
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111000000111110000000000000000
        2r1111111111111100000000000000000
        2r111111111111000000000000000000
        2r11111111110000000000000000000
        2r1111111100000000000000000000
        2r1111111100000000000000000000
        2r11111111110000000000000000000
        2r111111111111000000000000000000
        2r1111111111111100000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000
        2r11111111111111110000000000000000)
    offset: 0@0))
    Receiver's instance variables:
        bits: a Bitmap of length 16
        width: 16
        height: 16
        depth: 1
        offset: -1@-1
        maskForm: Form(16x16x1)

SophieBook class>>fromURI:application:
    Receiver: SophieBook
    Arguments and temporary variables:
        t1: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf
        t2: SophieApplication
        t3: a SophieBook (804) (nil)
    Receiver's instance variables:
        superclass: SophieAbstractBook
        methodDict: a MethodDictionary(size 102)
        format: 190
        instanceVariables: #('resourceManager' 'styleLibrary' 'templateLibrary' 'contentManager' 'markerManager' 'numberingManager' 'uri' 'eventTriggerManager' 'embeddedBooks' 'possibleURIForLinking' 'scriptManager' 'manifest' 'possibleManifestNumber' 'usageStatistic')
        organization: ('*Sophie-ResourceManager' addAsEmbeddedBook: addEmbeddedBook: closeBookCleanup lookupUUIDInResourceMgr:andAddToListIfFound: rememberThisBookIfAsked resourceManager resourceManager: resourceManagerReset resourcesCalledStylesUsedByTemplateFrames:AddToList:trackContentNodes: resourcesCalledTemplatesUsedByFramesAddToList:trackContentNodes: resourcesForBookStructureAddToList: resourcesForContentsRootAddToList:resolveAgainst: resourcesForDefaultStylesAddToList: resourcesForSpinesAddToList: resourcesForTimeLinesAddToList: resourcesForTriggeredActionAddToList: resourcesUnaccountedFor: resourcesUsed resourcesUsedPlusReturnContentRootUsage: updateUsageStatistic usageStatistic)
('private' addContentIfNonFlowFrame: contentManager: createCreateCommentBook deleteContentIfNonFlowFrame: deleteThisBookIfInTempDirectory deleteThisBookViaSUnitTesting dummyUpBook markerManager: numberingManager: preferences: publishBookForInternetURI: publishBookURI: publishBookURI:overrideResourceManager:setPublishFlagAndPurge: save saveAndTrimGenerations: saveAsId: saveAsURI: saveAsURI:trimGenerations: saveAsURI:trimGenerations:overrideResourceManager: saveAsURI:trimGenerations:overrideResourceManager:preserveUUIDs: saveAsWithFeedBackBlock:URI:trimGenerations:overrideResourceManager:preserveUUIDs: styleLibrary: templateLibrary:)
('*sophie-ui-browser' asSophieBrowserItem)
('accessing' book containingBook contentManager contentRootsDo: embeddedBookMap embeddedBooks embeddedBooks: eventTriggerManager eventTriggerManager: findAllStrings:caseSensitive:do: findString:caseSensitive: manifest manifest: markerManager possibleManifestNumber possibleManifestNumber: possibleURIForLinking possibleURIForLinking: possibleURIForLinkingPeek resetStyleLibrary setSophieSUnitFolderUri setSophieSUnitUri setSophieSUnitUriFlatFiles styleLibrary templateLibrary templateify uri uri:)
('testing' canWeEmbeddThisBook: isEmbedded)
('initialize' createFlatFilesStorage createFolderStorage createMemoryStorage id:application: initDefaultIndices initDefaultStyles i...etc...
        subclasses: nil
        name: #SophieBook
        classPool: nil
        sharedPools: nil
        environment: a SystemDictionary(lots of globals)
        category: #'Sophie-Books'

SophieApplication>>openBookIfNotAlreadyOpenViaURI:
    Receiver: SophieApplication
    Arguments and temporary variables:
        t1: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf/
        t2: nil
        t3: nil
        t4: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf/
        t5: nil
        t6: true
        t7: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf
        t8: nil
    Receiver's instance variables:
        myProperties: nil
        myScripts: #(AsyncScriptMessageSend(#alertIfNotCurrentRelease -> SophieApplication) AsyncScriptMessageSend(#onFlowSelectionMarkerModified -> SophieApplication) AsyncScriptMessageSend(#onFlowSelectionChanged -> SophieApplication) AsyncScriptMessageSend(#onReaderModeChanged -> SophieApplication) AsyncScriptMessageSend(#onImageStartup -> SophieApplication) AsyncScriptMessageSend(#handleMacDoubleClickOfSophieDocument: -> SophieApplication) AsyncScriptMessageSend(#handleOpenNoteBookAtStartUp -> SophieApplication) AsyncScriptMessageSend(#applicationMenuInvoked:script:withArgs: -> SophieApplication) AsyncScriptMessageSend(#initMenuBarOnRestart -> SophieApplication) AsyncScriptMessageSend(#evaluate: -> SophieApplication) AsyncScriptMessageSend(#evaluate: -> SophieApplication))
        myEventMap: an IdentityDictionary(#activeBookModelChanged->#(AsyncScriptMessageSend(#evaluate: -> SophieBookListExtension) AsyncScriptMessageSend(#evaluate: -> SophieEmbeddedBookListExtension) AsyncScriptMessageSend(#onActiveBookInApplication -> SophieHaloExtension) AsyncScriptMessageSend(#onActiveBookInApplication -> SophieFrameSelectorExtension) AsyncScriptMessageSend(#onActiveBookInApplication -> SophieFlowConnectionExtension) AsyncScriptMessageSend(#onActiveBookChanged -> SophiePageStructureExtension) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophieStickyExtension) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophiePageListView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieTimelineExtensionView) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophieSearchResultView) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophieMarkerListView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView)) #alertIfNotCurrentRelease->#(AsyncScriptMessageSend(#alertIfNotCurrentRelease -> SophieApplication)) #applicationMenuInvoked->#(AsyncScriptMessageSend(#applicationMenuInvoked:script:withArgs: -> SophieApplication)) #beginDraggingResizeSelector->#(AsyncScriptMessageSend(#onBeginDraggingResizeSelector -> SophieHaloExtension)) #bookTemplatesChanged->#(AsyncScriptMessageSend(#evaluate: -> SophieBookTemplateListExtension)) #booksChanged->#(AsyncScriptMessageSend(#evaluate: -> SophieBookListExtension) AsyncScriptMessageSend(#evaluate: -> SophieEmbeddedBookListExtension)) #endDraggingResizeSelector->#(AsyncScriptMessageSend(#onEndDraggingResizeSelector -> SophieHaloExtension)) #flowSelectionChanged->#(AsyncScriptMessageSend(#onFlowSelectionChanged -> Sophie...etc...
        commandProcessor: a SophieCommandProcessor
        commands: a Dictionary(size 156)
        commandKeys: a Dictionary(#'application.addMarker'->#(#command #M) #'application.closeActiveBook'->#(#command #W) #'application.closeBookWindow'->#(#command #shift #W) #'application.copyFrameSelection'->#(#command #C) #'application.createNewBook'->#(#command #N) #'application.cutFrameSelection'->#(#command #X) #'application.deleteFrame'->#(#Delete) #'application.deleteMarker'->#(#Backspace) #'application.deletePage'->#(#Delete) #'application.duplicateFrameSelection'->#(#command #D) #'application.groupFrameSelection'->#(#command #G) #'application.openBook'->#(#command #O) #'application.pageDown'->#(#PageDown) #'application.pageUp'->#(#PageUp) #'application.pasteClipboard'->#(#command #V) #'application.pasteOverFrameSelection'->#(#command #V) #'application.readerMode'->#(#command #R) #'application.redo'->#(#command #Y) #'application.saveBook'->#(#command #S) #'application.saveBookAs'->#(#command #shift #S) #'application.undo'->#(#command #Z) #'application.ungroupFrameSelection'->#(#command #U) #'frame.moveDown'->#(#CursorDown) #'frame.moveFarDown'->#(#shift #CursorDown) #'frame.moveFarLeft'->#(#shift #CursorLeft) #'frame.moveFarRight'->#(#shift #CursorRight) #'frame.moveFarUp'->#(#shift #CursorUp) #'frame.moveLeft'->#(#CursorLeft) #'frame.moveLeftEdge'->#(#Home) #'frame.moveRight'->#(#CursorRight) #'frame.moveRightEdge'->#(#End) #'frame.moveUp'->#(#CursorUp) #'list.moveLineDown'->#(#CursorDown) #'list.moveLineEnd'->#(#End) #'list.moveLineStart'->#(#Home) #'list.moveLineUp'->#(#CursorUp) #'resourceBrowser.deleteSelection'->#(#Delete) #'spellExtension.findNextSpellingError'->#(#command #shift #;) #'text.backspace'->#(#Backspace) #'text.copySelection'->#(#command #C) #'text.cutSelection'->#(#command #X) #'text.enter'->#(#Return) #'text.findNext'->#(#command #G) #'text.forwardDelete'->#(#Delete) #'text.moveCursorLeft'->#(#CursorLeft) #'text.moveCursorRight'->#(#CursorRight) #'text.moveLineDown'->#(#CursorDown) #'text.moveLineEnd'->#(#End) #'text.moveLineStart'->#(#Home) #'text.moveLineUp'->#(#CursorUp) #'text.moveWord...etc...
        keyMap: SophieKeyboardDispatchTable
        ui: SophieApplicationMorphicWindowUI
        books: nil
        bookModels: a Set()
        extensions: a Dictionary(#ColorToolExtension->SophieColorToolExtension #FrameSelectorExtension->SophieFrameSelectorExtension #HaloExtension->SophieHaloExtension #MetaDataExtension->SophieMetaDataExtension #MovieExtension->SophieMovieExtension #PageStructureViewExtension->SophiePageStructureExtension #PageViewExtension->SophiePageViewExtension #bookList->SophieBookListExtension #bookTemplateList->SophieBookTemplateListExtension #commenting->SophieServerCommentExtension #componentList->SophieComponentExtension #debug->SophieDebugExtension #dialogs->SophieUserDialogsExtension #editing->SophieTextExtension #embeddedBookList->SophieEmbeddedBookListExtension #file->SophieBookFileExtension #flowConnection->SophieFlowConnectionExtension #frameLayoutExtension->SophieFrameLayoutExtension #help->SophieHelpMenuExtension #layoutTemplateExtension->SophieLayoutTemplateExtension #listNavigation->SophieListNavigationExtension #markers->SophieMarkerExtension #oki->SophieOKIExtension #pasteClipboard->SophiePasteClipboardExtension #resourceBrowser->SophieResourceBrowserExtension #searchReplace->SophieSearchReplaceExtension #searchResultExtension->SophieSearchResultExtension #servers->SophieS3ServersExtension #spellcheckui->SophieSpellCheckerExtension #sticky->SophieStickyExtension #thumbnailPageList->SophieThumbnailPageListExtension #timelineEditorView->SophieTimelineEditorExtension #timelineListView->SophieTimelineExtension )
        newBookStartNumber: nil
        booksWeaklyRemembered: nil
        inFullScreenMode: true

SophieApplication>>dropFile:at:
    Receiver: SophieApplication
    Arguments and temporary variables:
        t1: MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/'
        t2: 0@0
        t3: file:///Users/travencollins/Desktop/The [^] [^] Triangle Fire.spbf/
    Receiver's instance variables:
        myProperties: nil
        myScripts: #(AsyncScriptMessageSend(#alertIfNotCurrentRelease -> SophieApplication) AsyncScriptMessageSend(#onFlowSelectionMarkerModified -> SophieApplication) AsyncScriptMessageSend(#onFlowSelectionChanged -> SophieApplication) AsyncScriptMessageSend(#onReaderModeChanged -> SophieApplication) AsyncScriptMessageSend(#onImageStartup -> SophieApplication) AsyncScriptMessageSend(#handleMacDoubleClickOfSophieDocument: -> SophieApplication) AsyncScriptMessageSend(#handleOpenNoteBookAtStartUp -> SophieApplication) AsyncScriptMessageSend(#applicationMenuInvoked:script:withArgs: -> SophieApplication) AsyncScriptMessageSend(#initMenuBarOnRestart -> SophieApplication) AsyncScriptMessageSend(#evaluate: -> SophieApplication) AsyncScriptMessageSend(#evaluate: -> SophieApplication))
        myEventMap: an IdentityDictionary(#activeBookModelChanged->#(AsyncScriptMessageSend(#evaluate: -> SophieBookListExtension) AsyncScriptMessageSend(#evaluate: -> SophieEmbeddedBookListExtension) AsyncScriptMessageSend(#onActiveBookInApplication -> SophieHaloExtension) AsyncScriptMessageSend(#onActiveBookInApplication -> SophieFrameSelectorExtension) AsyncScriptMessageSend(#onActiveBookInApplication -> SophieFlowConnectionExtension) AsyncScriptMessageSend(#onActiveBookChanged -> SophiePageStructureExtension) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophieStickyExtension) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophiePageListView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieTimelineExtensionView) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophieSearchResultView) AsyncScriptMessageSend(#onActiveBookModelChanged -> SophieMarkerListView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView) AsyncScriptMessageSend(#onActiveBookChanged -> SophieResourceView)) #alertIfNotCurrentRelease->#(AsyncScriptMessageSend(#alertIfNotCurrentRelease -> SophieApplication)) #applicationMenuInvoked->#(AsyncScriptMessageSend(#applicationMenuInvoked:script:withArgs: -> SophieApplication)) #beginDraggingResizeSelector->#(AsyncScriptMessageSend(#onBeginDraggingResizeSelector -> SophieHaloExtension)) #bookTemplatesChanged->#(AsyncScriptMessageSend(#evaluate: -> SophieBookTemplateListExtension)) #booksChanged->#(AsyncScriptMessageSend(#evaluate: -> SophieBookListExtension) AsyncScriptMessageSend(#evaluate: -> SophieEmbeddedBookListExtension)) #endDraggingResizeSelector->#(AsyncScriptMessageSend(#onEndDraggingResizeSelector -> SophieHaloExtension)) #flowSelectionChanged->#(AsyncScriptMessageSend(#onFlowSelectionChanged -> Sophie...etc...
        commandProcessor: a SophieCommandProcessor
        commands: a Dictionary(size 156)
        commandKeys: a Dictionary(#'application.addMarker'->#(#command #M) #'application.closeActiveBook'->#(#command #W) #'application.closeBookWindow'->#(#command #shift #W) #'application.copyFrameSelection'->#(#command #C) #'application.createNewBook'->#(#command #N) #'application.cutFrameSelection'->#(#command #X) #'application.deleteFrame'->#(#Delete) #'application.deleteMarker'->#(#Backspace) #'application.deletePage'->#(#Delete) #'application.duplicateFrameSelection'->#(#command #D) #'application.groupFrameSelection'->#(#command #G) #'application.openBook'->#(#command #O) #'application.pageDown'->#(#PageDown) #'application.pageUp'->#(#PageUp) #'application.pasteClipboard'->#(#command #V) #'application.pasteOverFrameSelection'->#(#command #V) #'application.readerMode'->#(#command #R) #'application.redo'->#(#command #Y) #'application.saveBook'->#(#command #S) #'application.saveBookAs'->#(#command #shift #S) #'application.undo'->#(#command #Z) #'application.ungroupFrameSelection'->#(#command #U) #'frame.moveDown'->#(#CursorDown) #'frame.moveFarDown'->#(#shift #CursorDown) #'frame.moveFarLeft'->#(#shift #CursorLeft) #'frame.moveFarRight'->#(#shift #CursorRight) #'frame.moveFarUp'->#(#shift #CursorUp) #'frame.moveLeft'->#(#CursorLeft) #'frame.moveLeftEdge'->#(#Home) #'frame.moveRight'->#(#CursorRight) #'frame.moveRightEdge'->#(#End) #'frame.moveUp'->#(#CursorUp) #'list.moveLineDown'->#(#CursorDown) #'list.moveLineEnd'->#(#End) #'list.moveLineStart'->#(#Home) #'list.moveLineUp'->#(#CursorUp) #'resourceBrowser.deleteSelection'->#(#Delete) #'spellExtension.findNextSpellingError'->#(#command #shift #;) #'text.backspace'->#(#Backspace) #'text.copySelection'->#(#command #C) #'text.cutSelection'->#(#command #X) #'text.enter'->#(#Return) #'text.findNext'->#(#command #G) #'text.forwardDelete'->#(#Delete) #'text.moveCursorLeft'->#(#CursorLeft) #'text.moveCursorRight'->#(#CursorRight) #'text.moveLineDown'->#(#CursorDown) #'text.moveLineEnd'->#(#End) #'text.moveLineStart'->#(#Home) #'text.moveLineUp'->#(#CursorUp) #'text.moveWord...etc...
        keyMap: SophieKeyboardDispatchTable
        ui: SophieApplicationMorphicWindowUI
        books: nil
        bookModels: a Set()
        extensions: a Dictionary(#ColorToolExtension->SophieColorToolExtension #FrameSelectorExtension->SophieFrameSelectorExtension #HaloExtension->SophieHaloExtension #MetaDataExtension->SophieMetaDataExtension #MovieExtension->SophieMovieExtension #PageStructureViewExtension->SophiePageStructureExtension #PageViewExtension->SophiePageViewExtension #bookList->SophieBookListExtension #bookTemplateList->SophieBookTemplateListExtension #commenting->SophieServerCommentExtension #componentList->SophieComponentExtension #debug->SophieDebugExtension #dialogs->SophieUserDialogsExtension #editing->SophieTextExtension #embeddedBookList->SophieEmbeddedBookListExtension #file->SophieBookFileExtension #flowConnection->SophieFlowConnectionExtension #frameLayoutExtension->SophieFrameLayoutExtension #help->SophieHelpMenuExtension #layoutTemplateExtension->SophieLayoutTemplateExtension #listNavigation->SophieListNavigationExtension #markers->SophieMarkerExtension #oki->SophieOKIExtension #pasteClipboard->SophiePasteClipboardExtension #resourceBrowser->SophieResourceBrowserExtension #searchReplace->SophieSearchReplaceExtension #searchResultExtension->SophieSearchResultExtension #servers->SophieS3ServersExtension #spellcheckui->SophieSpellCheckerExtension #sticky->SophieStickyExtension #thumbnailPageList->SophieThumbnailPageListExtension #timelineEditorView->SophieTimelineEditorExtension #timelineListView->SophieTimelineExtension )
        newBookStartNumber: nil
        booksWeaklyRemembered: nil
        inFullScreenMode: true

[] in SophieWorldPlayer>>onDropFiles: {[SophieApplication singleton dropFile: t3 at: 0 @ 0]}
    Arguments and temporary variables:
        t1: [98@98 dropFilesEvent]
        t2: 1
        t3: MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/'
        t4: 1

BlockContext>>ensure:
    Receiver: [] in SophieWorldPlayer>>onDropFiles: {[SophieApplication singleton dropFile: t3 at: 0 @ 0]}
    Arguments and temporary variables:
        t1: [] in SophieWorldPlayer>>onDropFiles: {[t3 close]}
        t2: nil
        t3: nil
    Receiver's instance variables:
        sender: BlockContext>>ensure:
        pc: 68
        stackp: 0
        nargs: 0
        startpc: 61
        home: SophieWorldPlayer>>onDropFiles:

SophieWorldPlayer>>onDropFiles:
    Receiver: World
    Arguments and temporary variables:
        t1: [98@98 dropFilesEvent]
        t2: 1
        t3: MultiByteFileStream: '/Users/travencollins/Desktop/The Triangle Fire.spbf/'
        t4: 1
    Receiver's instance variables:
        myProperties: an IdentityDictionary(#name->'World' )
        myScripts: #(AsyncScriptMessageSend(#onDropFiles: -> World) AsyncScriptMessageSend(#onDragDrop: -> World) AsyncScriptMessageSend(#evaluate: -> World))
        myEventMap: an IdentityDictionary(#dragDrop->#(AsyncScriptMessageSend(#onDragDrop: -> World)) #dropFiles->#(AsyncScriptMessageSend(#onDropFiles: -> World)) #extentChanged->#(AsyncScriptMessageSend(#evaluate: -> World)) #tick->#(a ScriptEventObserver a ScriptEventObserver a ScriptEventObserver a ScriptEventObserver a ScriptEventObserver a ScriptEventObserver) )
        myCostume: a CWorldCostume[World]
        myPlayer: nil
        sensor: nil
        hands: #(Hand)
        scheduler: a ScriptScheduler
        maxLayoutRounds: 3
        damageRecorder: nil
        bltRects: nil
        eventQueue: a SharedQueue
        display: Form(1260x744x32)
        ownerMorph: a SophieRootMorph(3727)
        frameNumber: 2028
        activeProject: nil
        killFrame: nil

AsyncScriptMessageSend(ScriptMessageSend)>>synchronousValueWithArguments:event:
    Receiver: AsyncScriptMessageSend(#onDropFiles: -> World)
    Arguments and temporary variables:
        t1: #([98@98 dropFilesEvent])
        t2: a ScriptEvent
        t3: nil
        t4: ScriptProcess in AsyncScriptMessageSend(#onDropFiles: -> World)>>onDropFiles:
    Receiver's instance variables:
        receiver: World
        selector: #onDropFiles:
        arguments: #(nil)
        eventSpec: #(World #dropFiles)
        extraArgs: 1
        paused: nil
        myFarRef: nil
        myProcess: ScriptProcess in AsyncScriptMessageSend(#onDropFiles: -> World)>>onDropFiles:
        myQueue: a ScriptEventBuffer
        myIsland: an Island(Squeak)
        myScheduler: a ScriptScheduler
        myTrigger: CEventTrigger(on: dropFiles -> SophieWorldPlayer>>#onDropFiles:)
        myScripts: nil

AsyncScriptMessageSend(ScriptMessageSend)>>synchronousValueWithEvent:
    Receiver: AsyncScriptMessageSend(#onDropFiles: -> World)
    Arguments and temporary variables:
        t1: a ScriptEvent
        t2: #([98@98 dropFilesEvent])
        t3: 1
        t4: 1
    Receiver's instance variables:
        receiver: World
        selector: #onDropFiles:
        arguments: #(nil)
        eventSpec: #(World #dropFiles)
        extraArgs: 1
        paused: nil
        myFarRef: nil
        myProcess: ScriptProcess in AsyncScriptMessageSend(#onDropFiles: -> World)>>onDropFiles:
        myQueue: a ScriptEventBuffer
        myIsland: an Island(Squeak)
        myScheduler: a ScriptScheduler
        myTrigger: CEventTrigger(on: dropFiles -> SophieWorldPlayer>>#onDropFiles:)
        myScripts: nil

AsyncScriptMessageSend(ScriptMessageSend)>>valueWithEvent:
    Receiver: AsyncScriptMessageSend(#onDropFiles: -> World)
    Arguments and temporary variables:
        t1: a ScriptEvent
    Receiver's instance variables:
        receiver: World
        selector: #onDropFiles:
        arguments: #(nil)
        eventSpec: #(World #dropFiles)
        extraArgs: 1
        paused: nil
        myFarRef: nil
        myProcess: ScriptProcess in AsyncScriptMessageSend(#onDropFiles: -> World)>>onDropFiles:
        myQueue: a ScriptEventBuffer
        myIsland: an Island(Squeak)
        myScheduler: a ScriptScheduler
        myTrigger: CEventTrigger(on: dropFiles -> SophieWorldPlayer>>#onDropFiles:)
        myScripts: nil

AsyncScriptMessageSend>>value
    Receiver: AsyncScriptMessageSend(#onDropFiles: -> World)
    Arguments and temporary variables:

    Receiver's instance variables:
        receiver: World
        selector: #onDropFiles:
        arguments: #(nil)
        eventSpec: #(World #dropFiles)
        extraArgs: 1
        paused: nil
        myFarRef: nil
        myProcess: ScriptProcess in AsyncScriptMessageSend(#onDropFiles: -> World)>>onDropFiles:
        myQueue: a ScriptEventBuffer
        myIsland: an Island(Squeak)
        myScheduler: a ScriptScheduler
        myTrigger: CEventTrigger(on: dropFiles -> SophieWorldPlayer>>#onDropFiles:)
        myScripts: nil

ScriptProcess>>privateRunMsg
    Receiver: ScriptProcess in AsyncScriptMessageSend(#onDropFiles: -> World)>>onDropFiles:
    Arguments and temporary variables:

    Receiver's instance variables:
        nextLink: nil
        suspendedContext: ScriptProcess(Process)>>suspend
        priority: 45
        myList: nil
        errorHandler: nil
        name: nil
        island: an Island(Squeak)
        owner: AsyncScriptMessageSend(#onDropFiles: -> World)
        event: a ScriptEvent
        message: AsyncScriptMessageSend(#onDropFiles: -> World)
        result: nil
        flags: 1
        properties: an IdentityDictionary(#hand->Far:[Hand] )
        scheduler: a ScriptScheduler
        myEventMap: nil
        myLink: a ScriptProcessLinkWeak
        myTriggerBlock: nil
        myHandler: nil
        topContext: UndefinedObject(Object)>>doesNotUnderstand:

[] in ScriptProcess>>newScript {[self privateRunMsg. self suspend]}
    Arguments and temporary variables:


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand:
[] in StandardFileStream class>>retryWithGC:until:forFileNamed: {[:t6 | t6 name sameAs: t3]}
[] in Array(Collection)>>anySatisfy: {[:t2 | (t1 value: t2) ifTrue: [^ true]. nil]}
Array(SequenceableCollection)>>do:
Array(Collection)>>anySatisfy:
StandardFileStream class>>retryWithGC:until:forFileNamed:
MultiByteFileStream(StandardFileStream)>>open:forWrite:
MultiByteFileStream>>open:forWrite:
MultiByteFileStream class(StandardFileStream class)>>isAFileNamed:
FileStream class>>isAFileNamed:
SophieResourceStorageFileDirectoryWithFolderAndZipped(SophieResourceStorageFileDirectoryZip)>>metaDataURI
SophieResourceStorageFileDirectoryWithFolderAndZipped(SophieResourceStorageFileDirectory)>>getMetaDataReadStream
SophieResourceStorageFileDirectoryWithFolderAndZipped(SophieResourceStorage)>>readResourceMetadata:
SophieResourceManagerFolderPackage(SophieResourceManager)>>resourceDictionary
SophieResourceManagerFolderPackage(SophieResourceManager)>>book:
SophieResourceManagerFolderPackage class(SophieResourceManager class)>>forBook:
SophieBook>>createFolderStorage
SophieBook>>readFromURI:
[] in SophieBook class>>fromURI:application: {[t3 readFromURI: t1]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
SophieBook class>>fromURI:application:
SophieApplication>>openBookIfNotAlreadyOpenViaURI:
SophieApplication>>dropFile:at:
[] in SophieWorldPlayer>>onDropFiles: {[SophieApplication singleton dropFile: t3 at: 0 @ 0]}
BlockContext>>ensure:
SophieWorldPlayer>>onDropFiles:
AsyncScriptMessageSend(ScriptMessageSend)>>synchronousValueWithArguments:event:
AsyncScriptMessageSend(ScriptMessageSend)>>synchronousValueWithEvent:
AsyncScriptMessageSend(ScriptMessageSend)>>valueWithEvent:
AsyncScriptMessageSend>>value
ScriptProcess>>privateRunMsg
[] in ScriptProcess>>newScript {[self privateRunMsg. self suspend]}
 
(0011287 - 892 - 1490 - 1490 - 1490 - 1490 - 1490)
johnmci
10-10-07 17:38

Ok, the problem is that

open: fileName forWrite: writeMode
    "Open the file with the given name. If writeMode is true, allow writing, otherwise open the file in read-only mode."
    "Changed to do a GC and retry before failing ar 3/21/98 17:25"
    | f |
    f _ fileName asVmPathName.

    fileID _ StandardFileStream retryWithGC:[self primOpen: f writable: writeMode]
                    until:[:id| id notNil]
                    forFileNamed: fileName.
    fileID ifNil: [^ nil]. "allows sender to detect failure"
    self register.
    name _ fileName.
    rwmode _ writeMode.
    buffer1 _ String new: 1.


it actually registers the object into the WeakRegistry before assigning the name, this means the name is NIL. Now if another process can leap in and trigger the retryWithGC:until:forFileNamed: you will hit this problem since it is examining the keys and at the time it's added to the dictionary it has a nil name.
 

- Issue History
Date Modified Username Field Change
04-20-07 22:29 johnmci New Issue
04-20-07 22:29 johnmci Status new => assigned
04-20-07 22:29 johnmci Assigned To  => cdegroot
10-02-07 21:10 johnmci Note Added: 0011234
10-10-07 17:38 johnmci Note Added: 0011287
10-10-07 17:46 johnmci File Added: setFileNameBeforeRegister-JMM.1.cs.zip
10-24-10 05:51 leves Status assigned => resolved
10-24-10 05:51 leves Fixed in Version  => 4.1
10-24-10 05:51 leves Resolution open => fixed
02-06-11 23:48 leves Status resolved => closed


Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
45 total queries executed.
34 unique queries executed.
Powered by Mantis Bugtracker