Fix for Bug 688930 mswinpr2 allocates wrong memory size for DEVMODE

"Russell Lang" <[email protected]> Sat, 09 Dec 2006 15:26:27 +1100
Newsgroups gmane.comp.printing.ghostscript.patches
Message-ID <[email protected]>
--Message-Boundary-22828
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7BIT
Content-description: Mail message body

This has been committed:

Log message:
Fix bug 688930 mswinpr2 allocates wrong memory size for DEVMODE.
A printer DEVMODE structure is usually bigger than sizeof(DEVMODE)
due to printer private extra data.  Allocate the correct size
DEVMODE to include this private data.
Remove old Windows 3.1 and Win32s code.

Russell Lang                   [email protected]
Ghostgum Software Pty Ltd      http://www.ghostgum.com.au/



--Message-Boundary-22828
Content-type: Application/Octet-stream; name="winpr2alloc.txt"; type=Text
Content-disposition: attachment; filename="winpr2alloc.txt"
Content-transfer-encoding: BASE64

ZGlmZiAtdSBsOnNyYy9nZGV2d3ByMi5jIHNyYy9nZGV2d3ByMi5jDQotLS0gbDpzcmMvZ2Rl
dndwcjIuYwlTYXQgSnVsIDE1IDA5OjQ1OjI2IDIwMDYNCisrKyBzcmMvZ2RldndwcjIuYwlT
YXQgRGVjIDA5IDAzOjM2OjEzIDIwMDYNCkBAIC04NjMsNyArODYzLDcgQEANCiAgICAgY2hh
ciAqb3V0cHV0Ow0KICAgICBjaGFyICpkZXZjYXA7DQogICAgIGludCBkZXZjYXBzaXplOw0K
LSAgICBpbnQgc2l6ZTsNCisgICAgaW50IGRldm1vZGVfc2l6ZTsNCiANCiAgICAgaW50IGks
IG47DQogICAgIFBPSU5UICpwcDsNCkBAIC04NzMsMTEgKzg3Myw3IEBADQogICAgIGludCBw
YXBlcnNpemU7DQogICAgIGNoYXIgcGFwZXJuYW1lWzY0XTsNCiAgICAgY2hhciBkcnZuYW1l
WzMyXTsNCi0gICAgSElOU1RBTkNFIGhsaWI7DQotICAgIExQRk5ERVZNT0RFIHBmbkV4dERl
dmljZU1vZGU7DQotICAgIExQRk5ERVZDQVBTIHBmbkRldmljZUNhcGFiaWxpdGllczsNCiAg
ICAgTFBERVZNT0RFIHBvZGV2bW9kZSwgcGlkZXZtb2RlOw0KLQ0KICAgICBIQU5ETEUgaHBy
aW50ZXI7DQogDQogICAgIC8qIGZpcnN0IHRyeSB0byBkZXJpdmUgdGhlIHByaW50ZXIgbmFt
ZSBmcm9tIC1zT3V0cHV0RmlsZT0gKi8NCkBAIC05MTIsNjYgKzkwOCwyOCBAQA0KICAgICBH
ZXRQcm9maWxlU3RyaW5nKCJEZXZpY2VzIiwgZGV2aWNlLCAiIiwgZHJpdmVyYnVmLCBzaXpl
b2YoZHJpdmVyYnVmKSk7DQogICAgIGRyaXZlciA9IHN0cnRvayhkcml2ZXJidWYsICIsIik7
DQogICAgIG91dHB1dCA9IHN0cnRvayhOVUxMLCAiLCIpOw0KLSAgICBpZiAoaXNfd2luMzJz
KQ0KLSAgICB7DQotCXN0cmNweShkcnZuYW1lLCBkcml2ZXIpOw0KLQlzdHJjYXQoZHJ2bmFt
ZSwgIi5kcnYiKTsNCi0JZHJpdmVyID0gZHJ2bmFtZTsNCi0gICAgfQ0KIA0KLSAgICBpZiAo
IWlzX3dpbjMycykgewkJLyogV2luMzIgKi8NCi0JaWYgKCFPcGVuUHJpbnRlcihkZXZpY2Us
ICZocHJpbnRlciwgTlVMTCkpDQotCSAgICByZXR1cm4gRkFMU0U7DQotCXNpemUgPSBEb2N1
bWVudFByb3BlcnRpZXMoTlVMTCwgaHByaW50ZXIsIGRldmljZSwgTlVMTCwgTlVMTCwgMCk7
DQotCWlmICgocG9kZXZtb2RlID0gZ3NfbWFsbG9jKHdkZXYtPm1lbW9yeSwgc2l6ZSwgMSwg
Indpbl9wcjJfZ2V0ZGMiKSkgPT0gKExQREVWTU9ERSkgTlVMTCkgew0KLQkgICAgQ2xvc2VQ
cmludGVyKGhwcmludGVyKTsNCi0JICAgIHJldHVybiBGQUxTRTsNCi0JfQ0KLQlpZiAoKHBp
ZGV2bW9kZSA9IGdzX21hbGxvYyh3ZGV2LT5tZW1vcnksIHNpemUsIDEsICJ3aW5fcHIyX2dl
dGRjIikpID09IChMUERFVk1PREUpIE5VTEwpIHsNCi0JICAgIGdzX2ZyZWUod2Rldi0+bWVt
b3J5LCBwb2Rldm1vZGUsIHNpemUsIDEsICJ3aW5fcHIyX2dldGRjIik7DQotCSAgICBDbG9z
ZVByaW50ZXIoaHByaW50ZXIpOw0KLQkgICAgcmV0dXJuIEZBTFNFOw0KLQl9DQotCURvY3Vt
ZW50UHJvcGVydGllcyhOVUxMLCBocHJpbnRlciwgZGV2aWNlLCBwb2Rldm1vZGUsIE5VTEws
IERNX09VVF9CVUZGRVIpOw0KLQlwZm5EZXZpY2VDYXBhYmlsaXRpZXMgPSAoTFBGTkRFVkNB
UFMpIERldmljZUNhcGFiaWxpdGllczsNCi0gICAgfSBlbHNlDQotICAgIHsJCQkJLyogV2lu
MTYgYW5kIFdpbjMycyAqLw0KLQkvKiBub3cgbG9hZCB0aGUgcHJpbnRlciBkcml2ZXIgKi8N
Ci0JaGxpYiA9IExvYWRMaWJyYXJ5KGRyaXZlcik7DQotCWlmIChobGliIDwgKEhJTlNUQU5D
RSkgSElOU1RBTkNFX0VSUk9SKQ0KLQkgICAgcmV0dXJuIEZBTFNFOw0KLQ0KLQkvKiBjYWxs
IEV4dERldmljZU1vZGUoKSB0byBnZXQgZGVmYXVsdCBwYXJhbWV0ZXJzICovDQotCXBmbkV4
dERldmljZU1vZGUgPSAoTFBGTkRFVk1PREUpIEdldFByb2NBZGRyZXNzKGhsaWIsICJFeHRE
ZXZpY2VNb2RlIik7DQotCWlmIChwZm5FeHREZXZpY2VNb2RlID09IChMUEZOREVWTU9ERSkg
TlVMTCkgew0KLQkgICAgRnJlZUxpYnJhcnkoaGxpYik7DQotCSAgICByZXR1cm4gRkFMU0U7
DQotCX0NCi0JcGZuRGV2aWNlQ2FwYWJpbGl0aWVzID0gKExQRk5ERVZDQVBTKSBHZXRQcm9j
QWRkcmVzcyhobGliLCAiRGV2aWNlQ2FwYWJpbGl0aWVzIik7DQotCWlmIChwZm5EZXZpY2VD
YXBhYmlsaXRpZXMgPT0gKExQRk5ERVZDQVBTKSBOVUxMKSB7DQotCSAgICBGcmVlTGlicmFy
eShobGliKTsNCi0JICAgIHJldHVybiBGQUxTRTsNCi0JfQ0KLQlzaXplID0gcGZuRXh0RGV2
aWNlTW9kZShOVUxMLCBobGliLCBOVUxMLCBkZXZpY2UsIG91dHB1dCwgTlVMTCwgTlVMTCwg
MCk7DQotCWlmICgocG9kZXZtb2RlID0gZ3NfbWFsbG9jKHdkZXYtPm1lbW9yeSwgc2l6ZSwg
MSwgIndpbl9wcjJfZ2V0ZGMiKSkgPT0gKExQREVWTU9ERSkgTlVMTCkgew0KLQkgICAgRnJl
ZUxpYnJhcnkoaGxpYik7DQotCSAgICByZXR1cm4gRkFMU0U7DQotCX0NCi0JaWYgKChwaWRl
dm1vZGUgPSBnc19tYWxsb2Mod2Rldi0+bWVtb3J5LCBzaXplLCAxLCAid2luX3ByMl9nZXRk
YyIpKSA9PSAoTFBERVZNT0RFKSBOVUxMKSB7DQotCSAgICBnc19mcmVlKHdkZXYtPm1lbW9y
eSwgcG9kZXZtb2RlLCBzaXplLCAxLCAid2luX3ByMl9nZXRkYyIpOw0KLQkgICAgRnJlZUxp
YnJhcnkoaGxpYik7DQotCSAgICByZXR1cm4gRkFMU0U7DQotCX0NCi0JcGZuRXh0RGV2aWNl
TW9kZShOVUxMLCBobGliLCBwb2Rldm1vZGUsIGRldmljZSwgb3V0cHV0LA0KLQkJCSBOVUxM
LCBOVUxMLCBETV9PVVRfQlVGRkVSKTsNCisgICAgaWYgKCFPcGVuUHJpbnRlcihkZXZpY2Us
ICZocHJpbnRlciwgTlVMTCkpDQorCXJldHVybiBGQUxTRTsNCisgICAgZGV2bW9kZV9zaXpl
ID0gRG9jdW1lbnRQcm9wZXJ0aWVzKE5VTEwsIGhwcmludGVyLCBkZXZpY2UsIE5VTEwsIE5V
TEwsIDApOw0KKyAgICBpZiAoKHBvZGV2bW9kZSA9IGdzX21hbGxvYyh3ZGV2LT5tZW1vcnks
IGRldm1vZGVfc2l6ZSwgMSwgIndpbl9wcjJfZ2V0ZGMiKSkNCisJPT0gKExQREVWTU9ERSkg
TlVMTCkgew0KKwlDbG9zZVByaW50ZXIoaHByaW50ZXIpOw0KKwlyZXR1cm4gRkFMU0U7DQor
ICAgIH0NCisgICAgaWYgKChwaWRldm1vZGUgPSBnc19tYWxsb2Mod2Rldi0+bWVtb3J5LCBk
ZXZtb2RlX3NpemUsIDEsICJ3aW5fcHIyX2dldGRjIikpCQk9PSAoTFBERVZNT0RFKSBOVUxM
KSB7DQorCWdzX2ZyZWUod2Rldi0+bWVtb3J5LCBwb2Rldm1vZGUsIGRldm1vZGVfc2l6ZSwg
MSwgIndpbl9wcjJfZ2V0ZGMiKTsNCisJQ2xvc2VQcmludGVyKGhwcmludGVyKTsNCisJcmV0
dXJuIEZBTFNFOw0KICAgICB9DQorICAgIERvY3VtZW50UHJvcGVydGllcyhOVUxMLCBocHJp
bnRlciwgZGV2aWNlLCBwb2Rldm1vZGUsIE5VTEwsIERNX09VVF9CVUZGRVIpOw0KIA0KICAg
ICAvKiBub3cgZmluZCBvdXQgd2hhdCBwYXBlciBzaXplcyBhcmUgYXZhaWxhYmxlICovDQot
ICAgIGRldmNhcHNpemUgPSBwZm5EZXZpY2VDYXBhYmlsaXRpZXMoZGV2aWNlLCBvdXRwdXQs
IERDX1BBUEVSU0laRSwgTlVMTCwgTlVMTCk7DQorICAgIGRldmNhcHNpemUgPSBEZXZpY2VD
YXBhYmlsaXRpZXMoZGV2aWNlLCBvdXRwdXQsIERDX1BBUEVSU0laRSwgTlVMTCwgTlVMTCk7
DQogICAgIGRldmNhcHNpemUgKj0gc2l6ZW9mKFBPSU5UKTsNCiAgICAgaWYgKChkZXZjYXAg
PSBnc19tYWxsb2Mod2Rldi0+bWVtb3J5LCBkZXZjYXBzaXplLCAxLCAid2luX3ByMl9nZXRk
YyIpKSA9PSAoTFBCWVRFKSBOVUxMKQ0KIAlyZXR1cm4gRkFMU0U7DQotICAgIG4gPSBwZm5E
ZXZpY2VDYXBhYmlsaXRpZXMoZGV2aWNlLCBvdXRwdXQsIERDX1BBUEVSU0laRSwgZGV2Y2Fw
LCBOVUxMKTsNCisgICAgbiA9IERldmljZUNhcGFiaWxpdGllcyhkZXZpY2UsIG91dHB1dCwg
RENfUEFQRVJTSVpFLCBkZXZjYXAsIE5VTEwpOw0KICAgICBwYXBlcndpZHRoID0gKGludCko
d2Rldi0+TWVkaWFTaXplWzBdICogMjU0IC8gNzIpOw0KICAgICBwYXBlcmhlaWdodCA9IChp
bnQpKHdkZXYtPk1lZGlhU2l6ZVsxXSAqIDI1NCAvIDcyKTsNCiAgICAgcGFwZXJuYW1lWzBd
ID0gJ1wwJzsNCkBAIC0xMDA2LDI2ICs5NjQsMjYgQEANCiAgICAgZ3NfZnJlZSh3ZGV2LT5t
ZW1vcnksIGRldmNhcCwgZGV2Y2Fwc2l6ZSwgMSwgIndpbl9wcjJfZ2V0ZGMiKTsNCiAgICAg
DQogICAgIC8qIGdldCB0aGUgZG1QYXBlclNpemUgKi8NCi0gICAgZGV2Y2Fwc2l6ZSA9IHBm
bkRldmljZUNhcGFiaWxpdGllcyhkZXZpY2UsIG91dHB1dCwgRENfUEFQRVJTLCBOVUxMLCBO
VUxMKTsNCisgICAgZGV2Y2Fwc2l6ZSA9IERldmljZUNhcGFiaWxpdGllcyhkZXZpY2UsIG91
dHB1dCwgRENfUEFQRVJTLCBOVUxMLCBOVUxMKTsNCiAgICAgZGV2Y2Fwc2l6ZSAqPSBzaXpl
b2YoV09SRCk7DQogICAgIGlmICgoZGV2Y2FwID0gZ3NfbWFsbG9jKHdkZXYtPm1lbW9yeSwg
ZGV2Y2Fwc2l6ZSwgMSwgIndpbl9wcjJfZ2V0ZGMiKSkgPT0gKExQQllURSkgTlVMTCkNCiAJ
cmV0dXJuIEZBTFNFOw0KLSAgICBuID0gcGZuRGV2aWNlQ2FwYWJpbGl0aWVzKGRldmljZSwg
b3V0cHV0LCBEQ19QQVBFUlMsIGRldmNhcCwgTlVMTCk7DQorICAgIG4gPSBEZXZpY2VDYXBh
YmlsaXRpZXMoZGV2aWNlLCBvdXRwdXQsIERDX1BBUEVSUywgZGV2Y2FwLCBOVUxMKTsNCiAg
ICAgaWYgKChwYXBlcmluZGV4ID49IDApICYmIChwYXBlcmluZGV4IDwgbikpDQogCXBhcGVy
c2l6ZSA9ICgoV09SRCAqKSBkZXZjYXApW3BhcGVyaW5kZXhdOw0KICAgICBnc19mcmVlKHdk
ZXYtPm1lbW9yeSwgZGV2Y2FwLCBkZXZjYXBzaXplLCAxLCAid2luX3ByMl9nZXRkYyIpOw0K
IA0KICAgICAvKiBnZXQgdGhlIHBhcGVyIG5hbWUgKi8NCi0gICAgZGV2Y2Fwc2l6ZSA9IHBm
bkRldmljZUNhcGFiaWxpdGllcyhkZXZpY2UsIG91dHB1dCwgRENfUEFQRVJOQU1FUywgTlVM
TCwgTlVMTCk7DQorICAgIGRldmNhcHNpemUgPSBEZXZpY2VDYXBhYmlsaXRpZXMoZGV2aWNl
LCBvdXRwdXQsIERDX1BBUEVSTkFNRVMsIE5VTEwsIE5VTEwpOw0KICAgICBkZXZjYXBzaXpl
ICo9IDY0Ow0KICAgICBpZiAoKGRldmNhcCA9IGdzX21hbGxvYyh3ZGV2LT5tZW1vcnksIGRl
dmNhcHNpemUsIDEsICJ3aW5fcHIyX2dldGRjIikpID09IChMUEJZVEUpIE5VTEwpDQogCXJl
dHVybiBGQUxTRTsNCi0gICAgbiA9IHBmbkRldmljZUNhcGFiaWxpdGllcyhkZXZpY2UsIG91
dHB1dCwgRENfUEFQRVJOQU1FUywgZGV2Y2FwLCBOVUxMKTsNCisgICAgbiA9IERldmljZUNh
cGFiaWxpdGllcyhkZXZpY2UsIG91dHB1dCwgRENfUEFQRVJOQU1FUywgZGV2Y2FwLCBOVUxM
KTsNCiAgICAgaWYgKChwYXBlcmluZGV4ID49IDApICYmIChwYXBlcmluZGV4IDwgbikpDQog
CXN0cmNweShwYXBlcm5hbWUsIGRldmNhcCArIHBhcGVyaW5kZXggKiA2NCk7DQogICAgIGdz
X2ZyZWUod2Rldi0+bWVtb3J5LCBkZXZjYXAsIGRldmNhcHNpemUsIDEsICJ3aW5fcHIyX2dl
dGRjIik7DQogDQotICAgIG1lbWNweShwaWRldm1vZGUsIHBvZGV2bW9kZSwgc2l6ZSk7DQor
ICAgIG1lbWNweShwaWRldm1vZGUsIHBvZGV2bW9kZSwgZGV2bW9kZV9zaXplKTsNCiANCiAg
ICAgcGlkZXZtb2RlLT5kbUZpZWxkcyA9IDA7DQogICAgIA0KQEAgLTEwNjgsNDAgKzEwMjYs
MjYgQEANCiAgICAgDQogICAgIHdpbl9wcjJfdXBkYXRlX3dpbih3ZGV2LCBwaWRldm1vZGUp
Ow0KICAgICANCi0gICAgaWYgKCFpc193aW4zMnMpIHsNCi0JDQotCS8qIG1lcmdlIHRoZSBl
bnRyaWVzICovDQotCURvY3VtZW50UHJvcGVydGllcyhOVUxMLCBocHJpbnRlciwgZGV2aWNl
LCBwb2Rldm1vZGUsIHBpZGV2bW9kZSwgRE1fSU5fQlVGRkVSIHwgRE1fT1VUX0JVRkZFUik7
DQotCUNsb3NlUHJpbnRlcihocHJpbnRlcik7DQotCQ0KLQkvKiBub3cgZ2V0IGEgREMgKi8N
Ci0Jd2Rldi0+aGRjcHJuID0gQ3JlYXRlREMoZHJpdmVyLCBkZXZpY2UsIE5VTEwsIHBvZGV2
bW9kZSk7DQotICAgIH0gZWxzZQ0KLSAgICB7CQkJCS8qIFdpbjE2IGFuZCBXaW4zMnMgKi8N
Ci0JcGZuRXh0RGV2aWNlTW9kZShOVUxMLCBobGliLCBwb2Rldm1vZGUsIGRldmljZSwgb3V0
cHV0LA0KLQkJCSBwaWRldm1vZGUsIE5VTEwsIERNX0lOX0JVRkZFUiB8IERNX09VVF9CVUZG
RVIpOw0KLQkvKiByZWxlYXNlIHRoZSBwcmludGVyIGRyaXZlciAqLw0KLQlGcmVlTGlicmFy
eShobGliKTsNCi0JLyogbm93IGdldCBhIERDICovDQotCWlmIChpc193aW4zMnMpDQotCSAg
ICBzdHJ0b2soZHJpdmVyLCAiLiIpOwkvKiByZW1vdmUgLmRydiAqLw0KLQl3ZGV2LT5oZGNw
cm4gPSBDcmVhdGVEQyhkcml2ZXIsIGRldmljZSwgb3V0cHV0LCBwb2Rldm1vZGUpOw0KLSAg
ICB9DQorICAgIC8qIG1lcmdlIHRoZSBlbnRyaWVzICovDQorICAgIERvY3VtZW50UHJvcGVy
dGllcyhOVUxMLCBocHJpbnRlciwgZGV2aWNlLCBwb2Rldm1vZGUsIHBpZGV2bW9kZSwgRE1f
SU5fQlVGRkVSIHwgRE1fT1VUX0JVRkZFUik7DQorICAgIENsb3NlUHJpbnRlcihocHJpbnRl
cik7DQogICAgIA0KLSAgICBpZiAod2Rldi0+d2luMzJfaGRldm1vZGUgPT0gTlVMTCkgew0K
LQl3ZGV2LT53aW4zMl9oZGV2bW9kZSA9IEdsb2JhbEFsbG9jKDAsIHNpemVvZihERVZNT0RF
KSk7DQotICAgIH0NCisgICAgLyogbm93IGdldCBhIERDICovDQorICAgIHdkZXYtPmhkY3By
biA9IENyZWF0ZURDKGRyaXZlciwgZGV2aWNlLCBOVUxMLCBwb2Rldm1vZGUpOw0KKyAgICAN
CisgICAgaWYgKHdkZXYtPndpbjMyX2hkZXZtb2RlID09IE5VTEwpDQorCXdkZXYtPndpbjMy
X2hkZXZtb2RlID0gR2xvYmFsQWxsb2MoMCwgZGV2bW9kZV9zaXplKTsNCiAgICAgDQogICAg
IGlmICh3ZGV2LT53aW4zMl9oZGV2bW9kZSkgew0KIAlMUERFVk1PREUgcGRldm1vZGUgPSAo
TFBERVZNT0RFKSBHbG9iYWxMb2NrKHdkZXYtPndpbjMyX2hkZXZtb2RlKTsNCiAJaWYgKHBk
ZXZtb2RlKSB7DQotCSAgICBtZW1jcHkocGRldm1vZGUsIHBvZGV2bW9kZSwgc2l6ZW9mKERF
Vk1PREUpKTsNCisJICAgIG1lbWNweShwZGV2bW9kZSwgcG9kZXZtb2RlLCBkZXZtb2RlX3Np
emUpOw0KIAkgICAgR2xvYmFsVW5sb2NrKHdkZXYtPndpbjMyX2hkZXZtb2RlKTsNCiAJfQ0K
ICAgICB9DQogDQotICAgIGdzX2ZyZWUod2Rldi0+bWVtb3J5LCBwaWRldm1vZGUsIHNpemUs
IDEsICJ3aW5fcHIyX2dldGRjIik7DQotICAgIGdzX2ZyZWUod2Rldi0+bWVtb3J5LCBwb2Rl
dm1vZGUsIHNpemUsIDEsICJ3aW5fcHIyX2dldGRjIik7DQorICAgIGdzX2ZyZWUod2Rldi0+
bWVtb3J5LCBwaWRldm1vZGUsIGRldm1vZGVfc2l6ZSwgMSwgIndpbl9wcjJfZ2V0ZGMiKTsN
CisgICAgZ3NfZnJlZSh3ZGV2LT5tZW1vcnksIHBvZGV2bW9kZSwgZGV2bW9kZV9zaXplLCAx
LCAid2luX3ByMl9nZXRkYyIpOw0KIA0KICAgICBpZiAod2Rldi0+aGRjcHJuICE9IChIREMp
IE5VTEwpDQogCXJldHVybiBUUlVFOwkJLyogc3VjY2VzcyAqLw0K

--Message-Boundary-22828
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
gs-code-review mailing list
[email protected]
http://www.ghostscript.com/mailman/listinfo/gs-code-review

--Message-Boundary-22828--