The following snippet will raise the error "Improper store into
indexable object". Binding to a 32 bit number and afterwards to a number larger than 32 bits seems to cause the problem (when 0 is replaced by 16r100000000, it works fine). Tested with VW 7.4.1 / vw 7.5 mar3, Oracle 10g Express Client / Oracle 9i Client, and Oracle 9i Server, Windows 2000. | con session | con := OracleConnection new. con environment: '//hostname/Db'; username: 'scott'; connect: 'tiger'. session := con getSession. session connect. [ session prepare: 'CREATE TABLE bufferbug1 (Col1 NUMBER(20))'. session execute. session prepare: 'INSERT INTO bufferbug1 values (?)'. " a 32 bit integer " session bindInput: (Array with: 0). session execute. " not a 32 bit integer " session bindInput: (Array with: 16r100000000). session execute. ] ensure: [ session disconnect ]. Unhandled exception: Improper store into indexable object UninterpretedBytes(Object)>>error: UninterpretedBytes(Object)>>improperStoreError UninterpretedBytes(Object)>>basicAt:put: UninterpretedBytes>>byteAt:put: UninterpretedBytes>>longAt:put:bigEndian: UninterpretedBytes>>longAt:put: CIntegerType(CScalarType)>>put:into:at: CIntegerType(CType)>>contentsAt:offset:put: CPointer>>primContentsAt:index:pointerKind:datumKind:put: CPointer>>at:put: OracleBuffer>>at:putSignedInteger: OracleBuffer>>at:put: OracleBuffer>>value: optimized [] in OracleSession>>bindValue:at: BlockClosure>>on:do: OracleSession>>bindValue:at: OracleSession>>bindExternal optimized [] in ExternalDatabaseSession>>execute BlockClosure>>ifCurtailed: OracleSession(ExternalDatabaseSession)>>execute optimized [] in UndefinedObject>>unboundMethod BlockClosure>>ensure: UndefinedObject>>unboundMethod UndefinedObject(Object)>>performMethod:arguments: UndefinedObject(Object)>>performMethod: TextEditorController(ParagraphEditor)>>evaluateCompiled: optimized [] in ParagraphEditor>>evaluateSelection BlockClosure>>ensure: Cursor>>showWhile: TextEditorController(ParagraphEditor)>>evaluateSelection optimized [] in ParagraphEditor>>doIt BlockClosure>>on:do: TextEditorController(ParagraphEditor)>>doIt WorkspacePage>>doIt Workbook(AbstractWorkspace)>>smalltalkDoIt Win98MenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymbol: Win98MenuBarButtonController(MenuBarButtonController)>>dispatchMenuSelection: optimized [] in [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: BlockClosure>>ensure: optimized [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: BlockClosure>>on:do: Win98MenuBarButtonView(MenuBarButtonView)>>processShortcutKeyEventAsMenuItemAccessor: [] in Win98MenuBar(MenuBar)>>processShortcutKeyEventInMenuBar: OrderedCollection>>do: Win98MenuBar(MenuBar)>>processShortcutKeyEventInMenuBar: KeyboardProcessor>>processShortcutKeyEvent: KeyboardProcessor>>processKeyboardEvent: KeyboardProcessor>>processKeyboardEvent:for: EventDispatcher>>dispatchEvent: KeyPressedEvent(Event)>>dispatch KeyPressedEvent(Event)>>dispatchForWindowManager: optimized [] in WindowManager>>safelyDispatchForWindowManager: BlockClosure>>on:do: WindowManager>>safelyDispatchForWindowManager: WindowManager>>processNextEvent optimized [] in [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in Process class>>forBlock:priority: ---------------------------------------------------------------------- UninterpretedBytes(Object)>>error: Receiver: an UninterpretedBytes Arguments: aStringOrMessage = an UserMessage('Improper store into indexable object', #errImproperIndex, #dialogs) Temporaries: lastNonSpace = 36 aString = 'Improper store into indexable object' Context PC = 18 ---------------------------------------------------------------------- UninterpretedBytes(Object)>>improperStoreError Receiver: an UninterpretedBytes Context PC = 10 ---------------------------------------------------------------------- UninterpretedBytes(Object)>>basicAt:put: Receiver: an UninterpretedBytes Arguments: index = 4 value = -256 Context PC = 31 ---------------------------------------------------------------------- UninterpretedBytes>>byteAt:put: Receiver: an UninterpretedBytes Arguments: index = 4 aByte = -256 Context PC = 6 ---------------------------------------------------------------------- UninterpretedBytes>>longAt:put:bigEndian: Receiver: an UninterpretedBytes Arguments: byteIndex = 1 aLong = 4294967296 isBE = false Temporaries: b0 = -256 b1 = 0 b2 = 0 b3 = 0 Context PC = 89 ---------------------------------------------------------------------- UninterpretedBytes>>longAt:put: Receiver: an UninterpretedBytes Arguments: byteIndex = 1 aLong = 4294967296 Context PC = 14 ---------------------------------------------------------------------- CIntegerType(CScalarType)>>put:into:at: Receiver: a CIntegerType Instance Variables: specifierFlags = 1 kind = 6 numBits = 32 printName = 'long' storeSelector = #signedLong atSelector = #longAt: atPutSelector = #longAt:put: Arguments: newData = 4294967296 data = an UninterpretedBytes offset = 1 Context PC = 10 ---------------------------------------------------------------------- CIntegerType(CType)>>contentsAt:offset:put: Receiver: a CIntegerType Instance Variables: specifierFlags = 1 kind = 6 numBits = 32 printName = 'long' storeSelector = #signedLong atSelector = #longAt: atPutSelector = #longAt:put: Arguments: ptr = a CPointer {015DA300} (long * ) offset = 0 data = 4294967296 Temporaries: buffer = an UninterpretedBytes size = 4 Context PC = 15 ---------------------------------------------------------------------- CPointer>>primContentsAt:index:pointerKind:datumKind:put: Receiver: a CPointer Instance Variables: theDatum = 22913792 type = long * Arguments: startAddress = 22913792 index = 0 pointerKind = 13 datumKind = 6 data = 4294967296 Context PC = 21 ---------------------------------------------------------------------- CPointer>>at:put: Receiver: a CPointer Instance Variables: theDatum = 22913792 type = long * Arguments: index = 0 data = 4294967296 Temporaries: referentType = long Context PC = 14 ---------------------------------------------------------------------- OracleBuffer>>at:putSignedInteger: Receiver: an OracleBuffer Instance Variables: databaseType = 3 encoding = #'windows-1252' elementSize = 4 count = 0 bufferPointer = a CPointer {015DA300} (long * ) indicatorsPointer = a CPointer {002FFE88} (short * ) lengthsPointer = a CPointer {002FFE8A} (unsigned short * ) rcodesPointer = a CPointer {002FFE8C} (unsigned short * ) cursizPointer = nil getSelector = #getSignedIntegerAt: setSelector = #at:putSignedInteger: nullsPossible = true tempArray = nil session = an OracleSession( hstmt = 9545A54 ) Arguments: index = 1 aValue = 4294967296 Temporaries: indexMinus1 = 0 Context PC = 29 ---------------------------------------------------------------------- OracleBuffer>>at:put: Receiver: an OracleBuffer Instance Variables: databaseType = 3 encoding = #'windows-1252' elementSize = 4 count = 0 bufferPointer = a CPointer {015DA300} (long * ) indicatorsPointer = a CPointer {002FFE88} (short * ) lengthsPointer = a CPointer {002FFE8A} (unsigned short * ) rcodesPointer = a CPointer {002FFE8C} (unsigned short * ) cursizPointer = nil getSelector = #getSignedIntegerAt: setSelector = #at:putSignedInteger: nullsPossible = true tempArray = nil session = an OracleSession( hstmt = 9545A54 ) Arguments: anIndex = 1 aValue = 4294967296 Context PC = 9 ---------------------------------------------------------------------- OracleBuffer>>value: Receiver: an OracleBuffer Instance Variables: databaseType = 3 encoding = #'windows-1252' elementSize = 4 count = 0 bufferPointer = a CPointer {015DA300} (long * ) indicatorsPointer = a CPointer {002FFE88} (short * ) lengthsPointer = a CPointer {002FFE8A} (unsigned short * ) rcodesPointer = a CPointer {002FFE8C} (unsigned short * ) cursizPointer = nil getSelector = #getSignedIntegerAt: setSelector = #at:putSignedInteger: nullsPossible = true tempArray = nil session = an OracleSession( hstmt = 9545A54 ) Arguments: aValueOrArray = 4294967296 Temporaries: isArray = false size = nil index = nil index = nil Context PC = 24 ---------------------------------------------------------------------- optimized [] in OracleSession>>bindValue:at: Receiver: an UndefinedObject Temporaries: buffer = an OracleBuffer .aValue = 4294967296 Context PC = 7 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in OracleSession>>bindValue:at: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = UnableToBind handlerBlock = BlockClosure [] in OracleSession>>bindValue:at: Context PC = 18 ---------------------------------------------------------------------- OracleSession>>bindValue:at: Receiver: an OracleSession Instance Variables: stateHolder = a ValueHolder on: #prepared traceStream = nil traceLevel = 0 participants = a WeakArray[0] participantsSemaphore = a RecursionLock connection = an OracleConnection( hsvcctx = 953C580 ) query = 'INSERT INTO bufferbug1 values (?)' queryFragments = an OrderedCollection[3] bindInput = an Array[1] bindTemplate = nil bindOutput = nil useNamedOutputBinding = false bindValues = an IdentityDictionary[0] resultTemplate = nil allocateForEachRow = true blockFactor = 1 numColumns = nil columnDescriptions = nil rowAdaptors = nil rowBuffersHolder = a ValueHolder on: nil bufferIndex = nil answerStream = nil currentRow = nil resultsCache = nil hstmtHolder = a ValueHolder on: a CCompositePointer {09545A54} (struct __OCIStmt * ) herrHolder = a ValueHolder on: a CCompositePointer {0953C634} (struct __OCIError * ) bindValuePointersHolder = a ValueHolder on: IdentityDictionary (1->an OracleBuffer ) maxLongBytes = 32768 queryIsPLSQL = false currentRowIndex = nil totalRows = nil rowsInBlock = nil dependentLobs = a WeakDictionary[0] sqlPointerHolder = a ValueHolder on: a CPointer {015DA228} (unsigned char * ) maxBindSize = 1 needBinding = true Arguments: aValue = 4294967296 position = 1 Temporaries: buffer = an OracleBuffer bindSize = 1 Context PC = 90 ---------------------------------------------------------------------- OracleSession>>bindExternal Receiver: an OracleSession Instance Variables: stateHolder = a ValueHolder on: #prepared traceStream = nil traceLevel = 0 participants = a WeakArray[0] participantsSemaphore = a RecursionLock connection = an OracleConnection( hsvcctx = 953C580 ) query = 'INSERT INTO bufferbug1 values (?)' queryFragments = an OrderedCollection[3] bindInput = an Array[1] bindTemplate = nil bindOutput = nil useNamedOutputBinding = false bindValues = an IdentityDictionary[0] resultTemplate = nil allocateForEachRow = true blockFactor = 1 numColumns = nil columnDescriptions = nil rowAdaptors = nil rowBuffersHolder = a ValueHolder on: nil bufferIndex = nil answerStream = nil currentRow = nil resultsCache = nil hstmtHolder = a ValueHolder on: a CCompositePointer {09545A54} (struct __OCIStmt * ) herrHolder = a ValueHolder on: a CCompositePointer {0953C634} (struct __OCIError * ) bindValuePointersHolder = a ValueHolder on: IdentityDictionary (1->an OracleBuffer ) maxLongBytes = 32768 queryIsPLSQL = false currentRowIndex = nil totalRows = nil rowsInBlock = nil dependentLobs = a WeakDictionary[0] sqlPointerHolder = a ValueHolder on: a CPointer {015DA228} (unsigned char * ) maxBindSize = 1 needBinding = true Temporaries: index = 2 bindMarker = 1 value = 4294967296 bindPosition = 1 Context PC = 59 ---------------------------------------------------------------------- optimized [] in ExternalDatabaseSession>>execute Receiver: an UndefinedObject Temporaries: .self = an OracleSession( hstmt = 9545A54 ) Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>ifCurtailed: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in ExternalDatabaseSession>>execute outerContext = nil copiedValues = an OracleSession( hstmt = 9545A54 ) Arguments: terminationBlock = BlockClosure [] in ExternalDatabaseSession>>execute Context PC = 4 ---------------------------------------------------------------------- OracleSession(ExternalDatabaseSession)>>execute Receiver: an OracleSession Instance Variables: stateHolder = a ValueHolder on: #prepared traceStream = nil traceLevel = 0 participants = a WeakArray[0] participantsSemaphore = a RecursionLock connection = an OracleConnection( hsvcctx = 953C580 ) query = 'INSERT INTO bufferbug1 values (?)' queryFragments = an OrderedCollection[3] bindInput = an Array[1] bindTemplate = nil bindOutput = nil useNamedOutputBinding = false bindValues = an IdentityDictionary[0] resultTemplate = nil allocateForEachRow = true blockFactor = 1 numColumns = nil columnDescriptions = nil rowAdaptors = nil rowBuffersHolder = a ValueHolder on: nil bufferIndex = nil answerStream = nil currentRow = nil resultsCache = nil hstmtHolder = a ValueHolder on: a CCompositePointer {09545A54} (struct __OCIStmt * ) herrHolder = a ValueHolder on: a CCompositePointer {0953C634} (struct __OCIError * ) bindValuePointersHolder = a ValueHolder on: IdentityDictionary (1->an OracleBuffer ) maxLongBytes = 32768 queryIsPLSQL = false currentRowIndex = nil totalRows = nil rowsInBlock = nil dependentLobs = a WeakDictionary[0] sqlPointerHolder = a ValueHolder on: a CPointer {015DA228} (unsigned char * ) maxBindSize = 1 needBinding = true Context PC = 34 ---------------------------------------------------------------------- optimized [] in UndefinedObject>>unboundMethod Receiver: an UndefinedObject Temporaries: .session = an OracleSession( hstmt = 9545A54 ) Context PC = 33 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in UndefinedObject>>unboundMethod outerContext = nil copiedValues = an OracleSession( hstmt = 9545A54 ) Arguments: aBlock = BlockClosure [] in UndefinedObject>>unboundMethod Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- UndefinedObject>>unboundMethod Receiver: an UndefinedObject Temporaries: con = an OracleConnection( hsvcctx = 953C580 ) session = an OracleSession( hstmt = 9545A54 ) Context PC = 29 ---------------------------------------------------------------------- UndefinedObject(Object)>>performMethod:arguments: Receiver: an UndefinedObject Arguments: method = AnnotatedMethod UndefinedObject>>unboundMethod args = an Array[0] Context PC = 5 ---------------------------------------------------------------------- UndefinedObject(Object)>>performMethod: Receiver: an UndefinedObject Arguments: method = AnnotatedMethod UndefinedObject>>unboundMethod Context PC = 5 ---------------------------------------------------------------------- TextEditorController(ParagraphEditor)>>evaluateCompiled: Receiver: a TextEditorController Instance Variables: model = a PluggableAdaptor view = a TextEditorView sensor = a TranslatingSensor menuHolder = a ValueHolder on: a Menu performer = a WorkspacePage beginTypeInIndex = nil anchorIndex = 563 emphasisHere = nil dispatchTable = a DispatchTable charComposer = a CharacterComposer textHasChanged = true feelPolicy = a HolgisCodingFeelPolicy supportCodeEditingFeels = true localMenuItems = an Array[20] extendingDown = true keyboardProcessor = a KeyboardProcessor keyboardHook = nil readOnly = false accepted = false autoAccept = false continuousAccept = false tabMeansNextField = true tabRequiresControl = true dispatcher = an UIDispatcher Arguments: aMethod = AnnotatedMethod UndefinedObject>>unboundMethod Temporaries: context = nil Context PC = 13 ---------------------------------------------------------------------- optimized [] in ParagraphEditor>>evaluateSelection Receiver: an UndefinedObject Temporaries: .self = a TextEditorController .code = AnnotatedMethod UndefinedObject>>unboundMethod Context PC = 7 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in ParagraphEditor>>evaluateSelection outerContext = nil copiedValues = an Array[2] Arguments: aBlock = BlockClosure [] in Cursor>>showWhile: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Cursor>>showWhile: Receiver: a Cursor Instance Variables: errorCode = 0 handle = 3 image = Depth1Image(extent: 16@16 depth: 1) mask = Depth1Image(extent: 16@16 depth: 1) hotSpot = 1@1 name = 'xeq' Arguments: aBlock = BlockClosure [] in ParagraphEditor>>evaluateSelection Temporaries: oldcursor = Cursor normal Context PC = 23 ---------------------------------------------------------------------- TextEditorController(ParagraphEditor)>>evaluateSelection Receiver: a TextEditorController Instance Variables: model = a PluggableAdaptor view = a TextEditorView sensor = a TranslatingSensor menuHolder = a ValueHolder on: a Menu performer = a WorkspacePage beginTypeInIndex = nil anchorIndex = 563 emphasisHere = nil dispatchTable = a DispatchTable charComposer = a CharacterComposer textHasChanged = true feelPolicy = a HolgisCodingFeelPolicy supportCodeEditingFeels = true localMenuItems = an Array[20] extendingDown = true keyboardProcessor = a KeyboardProcessor keyboardHook = nil readOnly = false accepted = false autoAccept = false continuousAccept = false tabMeansNextField = true tabRequiresControl = true dispatcher = an UIDispatcher Temporaries: code = AnnotatedMethod UndefinedObject>>unboundMethod result = nil Context PC = 14 ---------------------------------------------------------------------- optimized [] in ParagraphEditor>>doIt Receiver: an UndefinedObject Temporaries: .self = a TextEditorController Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in ParagraphEditor>>doIt outerContext = nil copiedValues = a TextEditorController Arguments: anExceptionSelector = CompilationError handlerBlock = BlockClosure [] in ParagraphEditor>>doIt Context PC = 18 ---------------------------------------------------------------------- TextEditorController(ParagraphEditor)>>doIt Receiver: a TextEditorController Instance Variables: model = a PluggableAdaptor view = a TextEditorView sensor = a TranslatingSensor menuHolder = a ValueHolder on: a Menu performer = a WorkspacePage beginTypeInIndex = nil anchorIndex = 563 emphasisHere = nil dispatchTable = a DispatchTable charComposer = a CharacterComposer textHasChanged = true feelPolicy = a HolgisCodingFeelPolicy supportCodeEditingFeels = true localMenuItems = an Array[20] extendingDown = true keyboardProcessor = a KeyboardProcessor keyboardHook = nil readOnly = false accepted = false autoAccept = false continuousAccept = false tabMeansNextField = true tabRequiresControl = true dispatcher = an UIDispatcher Context PC = 20 ---------------------------------------------------------------------- WorkspacePage>>doIt Receiver: a WorkspacePage Instance Variables: dependents = a PluggableAdaptor builder = an UIBuilder uiSession = nil eventHandlers = an IdentityDictionary[1] workspace = a Workbook label = 'oracle1.ws' verboseLabel = nil fileTimestamp = Donnerstag, 22. Dezember 2005 13:22:12.000 textModel = a PluggableAdaptor unacceptedText = nil savedSelection = an Array[2] savedFileTimestamp = Donnerstag, 22. Dezember 2005 13:22:12.000 textModelOverride = nil Context PC = 16 ---------------------------------------------------------------------- Workbook(AbstractWorkspace)>>smalltalkDoIt Receiver: a Workbook Instance Variables: dependents = an ApplicationWindow 27 ('Workspace') builder = an UIBuilder uiSession = a ControlManager eventHandlers = nil locals = a WorkspaceVariablePool[0] importAll = true specificImports = an Array[3] importSummaryHolder = a ValueHolder on: 'All' statusBarVisible = true encodingChannel = a ValueHolder on: #Source menuBarHolder = a ValueHolder on: a Menu pageHolder = a SelectionInList lastInstalledPage = a WorkspacePage Context PC = 5 ---------------------------------------------------------------------- Win98MenuBarButtonController(MenuBarButtonController)>>dispatchMenuSymbol: Receiver: a Win98MenuBarButtonController Instance Variables: model = nil view = a Win98MenuBarButtonView sensor = a TranslatingSensor highlightOnOpen = false Arguments: menuSelection = #smalltalkDoIt Context PC = 38 ---------------------------------------------------------------------- Win98MenuBarButtonController(MenuBarButtonController)>>dispatchMenuSelection: Receiver: a Win98MenuBarButtonController Instance Variables: model = nil view = a Win98MenuBarButtonView sensor = a TranslatingSensor highlightOnOpen = false Arguments: menuSelection = #smalltalkDoIt Context PC = 21 ---------------------------------------------------------------------- optimized [] in [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: Receiver: an UndefinedObject Temporaries: .self = a Win98MenuBarButtonView .theValue = #smalltalkDoIt Context PC = 12 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: outerContext = nil copiedValues = an Array[2] Arguments: aBlock = BlockClosure [] in [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- optimized [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: Receiver: an UndefinedObject Temporaries: .self = a Win98MenuBarButtonView .theValue = #smalltalkDoIt Context PC = 14 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = VetoAction handlerBlock = BlockClosure [] in MenuBarButtonView>>processShortcutKeyEventAsMenuItemAccessor: Context PC = 18 ---------------------------------------------------------------------- Win98MenuBarButtonView(MenuBarButtonView)>>processShortcutKeyEventAsMenuItemAccessor: Receiver: a Win98MenuBarButtonView Instance Variables: container = a BoundedWrapper on: a Win98MenuBarButtonView eventHandlers = nil model = nil controller = a Win98MenuBarButtonController properties = nil state = a WidgetState isInTransition = true latestValue = nil referenceValue = true label = Label for 'Smalltalk' textStyle = a VariableSizeTextAttributes helpText = nil menuHolder = a Menu menuBar = a Win98MenuBar accessChar = 1 Arguments: aKeyboardEvent = a KeyPressedEvent Temporaries: theMenu = a Menu matchingMenuItem = a MenuItem 'Do it' theValue = #smalltalkDoIt selector = nil Context PC = 55 ---------------------------------------------------------------------- [] in Win98MenuBar(MenuBar)>>processShortcutKeyEventInMenuBar: Receiver: a Win98MenuBar Instance Variables: container = a MenuBarWrapper on: a Win98MenuBar eventHandlers = nil components = an OrderedCollection[5] preferredBounds = 4@4 corner: 207@27 leftSpace = 4 spaceBetweenItems = 0 extraSpaceTop = 4 extraSpaceBottom = 3 extraSpaceBetweenLines = 0 menuChannel = a ValueHolder on: a Menu performer = a Workbook menuButtons = an OrderedCollection[5] nextMenuButton = nil lastMousePosition = 970@39 Arguments: each = a Win98MenuBarButtonView Temporaries: .aKeyboardEvent = a KeyPressedEvent Context PC = 10 ---------------------------------------------------------------------- OrderedCollection>>do: Receiver: an OrderedCollection Instance Variables: firstIndex = 1 lastIndex = 5 Arguments: aBlock = BlockClosure [] in MenuBar>>processShortcutKeyEventInMenuBar: Temporaries: index = 3 Context PC = 17 ---------------------------------------------------------------------- Win98MenuBar(MenuBar)>>processShortcutKeyEventInMenuBar: Receiver: a Win98MenuBar Instance Variables: container = a MenuBarWrapper on: a Win98MenuBar eventHandlers = nil components = an OrderedCollection[5] preferredBounds = 4@4 corner: 207@27 leftSpace = 4 spaceBetweenItems = 0 extraSpaceTop = 4 extraSpaceBottom = 3 extraSpaceBetweenLines = 0 menuChannel = a ValueHolder on: a Menu performer = a Workbook menuButtons = an OrderedCollection[5] nextMenuButton = nil lastMousePosition = 970@39 Arguments: aKeyboardEvent = a KeyPressedEvent Context PC = 20 ---------------------------------------------------------------------- KeyboardProcessor>>processShortcutKeyEvent: Receiver: a KeyboardProcessor Instance Variables: keyboardConsumers = an OrderedCollection[2] currentConsumer = a TextEditorController default = nil cancel = nil keyboardHook = nil focusIsShifting = false currentConsumerChannel = nil acceptOnControlChange = false menuBar = a Win98MenuBar Arguments: aKeyEvent = a KeyPressedEvent Temporaries: theCurrentConsumer = a TextEditorController index = nil controller = nil Context PC = 28 ---------------------------------------------------------------------- KeyboardProcessor>>processKeyboardEvent: Receiver: a KeyboardProcessor Instance Variables: keyboardConsumers = an OrderedCollection[2] currentConsumer = a TextEditorController default = nil cancel = nil keyboardHook = nil focusIsShifting = false currentConsumerChannel = nil acceptOnControlChange = false menuBar = a Win98MenuBar Arguments: aKeyboardEvent = a KeyPressedEvent Temporaries: theCurrentConsumer = nil Context PC = 8 ---------------------------------------------------------------------- KeyboardProcessor>>processKeyboardEvent:for: Receiver: a KeyboardProcessor Instance Variables: keyboardConsumers = an OrderedCollection[2] currentConsumer = a TextEditorController default = nil cancel = nil keyboardHook = nil focusIsShifting = false currentConsumerChannel = nil acceptOnControlChange = false menuBar = a Win98MenuBar Arguments: keyboardEvent = a KeyPressedEvent aController = an ApplicationStandardSystemController [a Workbook] Temporaries: ev = a KeyPressedEvent Context PC = 26 ---------------------------------------------------------------------- EventDispatcher>>dispatchEvent: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController [a Workbook] currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a TextEditorController trapList = nil state = nil repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: event = a KeyPressedEvent Temporaries: objectWantingControl = nil targetKeyboardProcessor = a KeyboardProcessor Context PC = 82 ---------------------------------------------------------------------- KeyPressedEvent(Event)>>dispatch Receiver: a KeyPressedEvent Instance Variables: time = nil initiator = an EventDispatcher window = an ApplicationWindow 27 ('Workspace') state = nil keyCharacter = $ "16r0004" metaState = 2 alternativeKeyCharacter = nil Context PC = 16 ---------------------------------------------------------------------- KeyPressedEvent(Event)>>dispatchForWindowManager: Receiver: a KeyPressedEvent Instance Variables: time = nil initiator = an EventDispatcher window = an ApplicationWindow 27 ('Workspace') state = nil keyCharacter = $ "16r0004" metaState = 2 alternativeKeyCharacter = nil Arguments: aWinMgr = a WindowManager Context PC = 4 ---------------------------------------------------------------------- optimized [] in WindowManager>>safelyDispatchForWindowManager: Receiver: an UndefinedObject Temporaries: .event = a KeyPressedEvent .self = a WindowManager Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>safelyDispatchForWindowManager: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = an ExceptionSet[2] handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchForWindowManager: Context PC = 18 ---------------------------------------------------------------------- WindowManager>>safelyDispatchForWindowManager: Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[1] activeController = nil interruptLock = false outstandingMetaOrDamage = false openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Arguments: event = a KeyPressedEvent Context PC = 15 ---------------------------------------------------------------------- WindowManager>>processNextEvent Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[1] activeController = nil interruptLock = false outstandingMetaOrDamage = false openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Temporaries: event = a KeyPressedEvent Context PC = 9 ---------------------------------------------------------------------- optimized [] in [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 13 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess Context PC = 18 ---------------------------------------------------------------------- optimized [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 15 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority: Context PC = 18 ---------------------------------------------------------------------- optimized [] in Process class>>forBlock:priority: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in WindowManager>>newProcess Context PC = 9 |
Hi Holger,
I think I've seen this one before. Your analysis is right - if a buffer is allocated for SmallIntegers, and later reused with a LargeInteger, there is no check if the new data fit into the buffer. If I am not mistaken, it is a known bug registered as AR#50456. >The following snippet will raise the error "Improper store into >indexable object". Binding to a 32 bit number and afterwards to a number >larger than 32 bits seems to cause the problem (when 0 is replaced by >16r100000000, it works fine). Joachim Geidel |
50456 was fixed in 7.4.1, so I think this is either a
regression or a case that was missed.
At 01:29 PM 3/28/2007, [hidden email] wrote: Hi Holger, --
Alan Knight [|], Cincom Smalltalk Development
"The Static Typing Philosophy: Make it fast. Make it right.
Make it run." - Niall Ross
|
Free forum by Nabble | Edit this page |