David T. Lewis uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker-dtl.292.mcz
==================== Summary ====================
Name: VMMaker-dtl.292 Author: dtl Time: 22 December 2012, 8:08:31.613 pm UUID: 4dfff10c-07cb-457e-89ed-eabf9312a415 Ancestors: VMMaker-eem.291
VMMaker 4.10.6
Fix divideByZero protection in JPEGReaderPlugin (by Nicolas Cellier) http://lists.squeakfoundation.org/pipermail/vm-dev/2012-December/011671.html
=============== Diff against VMMaker-eem.291 ===============
Item was changed: ----- Method: JPEGReaderPlugin>>nextSampleCb (in category 'decoding') ----- nextSampleCb | dx dy blockIndex sampleIndex sample curX sx sy | <inline: true> dx := curX := cbComponent at: CurrentXIndex. dy := cbComponent at: CurrentYIndex. sx := cbComponent at: HScaleIndex. sy := cbComponent at: VScaleIndex. + (sx ~= 0 and: [sy ~= 0]) ifTrue: [ - (sx = 0 and:[sy = 0]) ifFalse:[ dx := dx // sx. dy := dy // sy. ]. blockIndex := (dy bitShift: -3) * (cbComponent at: BlockWidthIndex) + (dx bitShift: -3). sampleIndex := ((dy bitAnd: 7) bitShift: 3) + (dx bitAnd: 7). sample := (cbBlocks at: blockIndex) at: sampleIndex. curX := curX + 1. curX < ((cbComponent at: MCUWidthIndex) * 8) ifTrue:[ cbComponent at: CurrentXIndex put: curX. ] ifFalse:[ cbComponent at: CurrentXIndex put: 0. cbComponent at: CurrentYIndex put: (cbComponent at: CurrentYIndex) + 1. ]. ^ sample!
Item was changed: ----- Method: JPEGReaderPlugin>>nextSampleCr (in category 'decoding') ----- nextSampleCr | dx dy blockIndex sampleIndex sample curX sx sy | <inline: true> dx := curX := crComponent at: CurrentXIndex. dy := crComponent at: CurrentYIndex. sx := crComponent at: HScaleIndex. sy := crComponent at: VScaleIndex. + (sx ~= 0 and: [sy ~= 0]) ifTrue: [ - (sx = 0 and:[sy = 0]) ifFalse:[ dx := dx // sx. dy := dy // sy. ]. blockIndex := (dy bitShift: -3) * (crComponent at: BlockWidthIndex) + (dx bitShift: -3). sampleIndex := ((dy bitAnd: 7) bitShift: 3) + (dx bitAnd: 7). sample := (crBlocks at: blockIndex) at: sampleIndex. curX := curX + 1. curX < ((crComponent at: MCUWidthIndex) * 8) ifTrue:[ crComponent at: CurrentXIndex put: curX. ] ifFalse:[ crComponent at: CurrentXIndex put: 0. crComponent at: CurrentYIndex put: (crComponent at: CurrentYIndex) + 1. ]. ^ sample!
Item was changed: ----- Method: JPEGReaderPlugin>>nextSampleFrom:blocks: (in category 'decoding') ----- nextSampleFrom: aComponent blocks: aBlockArray | dx dy blockIndex sampleIndex sample curX sx sy | <var: #aComponent type: 'int *'> <var: #aBlockArray type: 'int **'> <inline: true> dx := curX := aComponent at: CurrentXIndex. dy := aComponent at: CurrentYIndex. sx := aComponent at: HScaleIndex. sy := aComponent at: VScaleIndex. + (sx ~= 0 and: [sy ~= 0]) ifTrue: [ - (sx = 0 and:[sy = 0]) ifFalse:[ dx := dx // sx. dy := dy // sy. ]. blockIndex := (dy bitShift: -3) * (aComponent at: BlockWidthIndex) + (dx bitShift: -3). sampleIndex := ((dy bitAnd: 7) bitShift: 3) + (dx bitAnd: 7). sample := (aBlockArray at: blockIndex) at: sampleIndex. curX := curX + 1. curX < ((aComponent at: MCUWidthIndex) * 8) ifTrue:[ aComponent at: CurrentXIndex put: curX. ] ifFalse:[ aComponent at: CurrentXIndex put: 0. aComponent at: CurrentYIndex put: (aComponent at: CurrentYIndex) + 1. ]. ^ sample!
Item was changed: ----- Method: JPEGReaderPlugin>>nextSampleY (in category 'decoding') ----- nextSampleY | dx dy blockIndex sampleIndex sample curX sx sy | <inline: true> dx := curX := yComponent at: CurrentXIndex. dy := yComponent at: CurrentYIndex. sx := yComponent at: HScaleIndex. sy := yComponent at: VScaleIndex. + (sx ~= 0 and: [sy ~= 0]) ifTrue: [ - (sx = 0 and:[sy = 0]) ifFalse:[ dx := dx // sx. dy := dy // sy. ]. blockIndex := (dy bitShift: -3) * (yComponent at: BlockWidthIndex) + (dx bitShift: -3). sampleIndex := ((dy bitAnd: 7) bitShift: 3) + (dx bitAnd: 7). sample := (yBlocks at: blockIndex) at: sampleIndex. curX := curX + 1. curX < ((yComponent at: MCUWidthIndex) * 8) ifTrue:[ yComponent at: CurrentXIndex put: curX. ] ifFalse:[ yComponent at: CurrentXIndex put: 0. yComponent at: CurrentYIndex put: (yComponent at: CurrentYIndex) + 1. ]. ^ sample!
Item was changed: ----- Method: VMMaker class>>versionString (in category 'version testing') ----- versionString
"VMMaker versionString"
+ ^'4.10.6'! - ^'4.10.5'!
vm-dev@lists.squeakfoundation.org