qrcode: Handle Python3 integer promotion
In Python3, all division operators promote integers to floats. We need
to downcast back to integer for the polygon vertices.
There was also an unhandled overflow in the QR generation that allowed
more than 512 bits to be loaded. This overflows the type of QR we
generate, so this truncates the input string to 62 bytes ( leaving 12
bits for the checksum )
Fixes: lp:1850223
* https://bugs.launchpad.net/kicad/+bug/1850223
(cherry picked from commit 9bccbaf497
)
This commit is contained in:
parent
d4a8ff4872
commit
167d408b5e
|
@ -42,7 +42,8 @@ class QRCodeWizard(FootprintWizardBase.FootprintWizard):
|
|||
|
||||
|
||||
def CheckParameters(self):
|
||||
self.Barcode = str(self.parameters['Barcode']['Contents'])
|
||||
# 512 bits maximum in this type of QR code with 2 bytes reserved
|
||||
self.Barcode = str(self.parameters['Barcode']['Contents'])[:61]
|
||||
self.X = self.parameters['Barcode']['Qr Pixel Width']
|
||||
self.negative = self.parameters['Barcode']['Negative']
|
||||
self.UseSilkS = self.parameters['Barcode']['Use SilkS layer']
|
||||
|
@ -70,7 +71,7 @@ class QRCodeWizard(FootprintWizardBase.FootprintWizard):
|
|||
polygon.SetShape(pcbnew.S_POLYGON)
|
||||
polygon.SetWidth( 0 )
|
||||
polygon.SetLayer(layer)
|
||||
halfsize = size/2
|
||||
halfsize = int(size/2)
|
||||
polygon.GetPolyShape().NewOutline();
|
||||
polygon.GetPolyShape().Append( halfsize+xposition, halfsize+yposition )
|
||||
polygon.GetPolyShape().Append( halfsize+xposition, -halfsize+yposition )
|
||||
|
|
Loading…
Reference in New Issue