En Fri, 31 Jul 2015 21:09:51 -0500, Martin Grajcar <[email protected]>
escribió:
Hi Jesus,
On Wed, Jul 1, 2015 at 10:52 PM, Jesus Reyes A. <[email protected]>
wrote:
On Tue, 30 Jun 2015 05:55:43 -0500, Martin Grajcar
<[email protected]> wrote:
Hello,
apologies for reposting, but I can't see in the archives (and have
received no answer).
Are attachments forbidden here? I'm given you a link instead:
https://dl.dropboxusercontent.com/u/4971686/bitmap-crash.demo.zip
Regards, Martin.
On Thu, Jun 25, 2015 at 10:57 AM, Martin Grajcar
<[email protected]> wrote:
My trivial Lazarus 1.4 application (and also our real application)
crash whenever it prints a TBitMap on MAC. It happens in
_platform_memmove$VARIANT>>>>$sse4 it tries to execute MOVDQA
and I thought it was an alignment problem, but it isn't.
I'm attaching my rather confusing demo. It does nothing but printing
and seems to work fine on Linux, but crashes on OSX. Commenting out
the StretchDraw >>>>prevents the crash. I have currently no access to
the MAC, so I apologize for not including a minimal example.
I can reproduce it, and although the AV is easily fixed it seems
printing bitmaps under Mac OS X it currently broken (loading a bitmap
from a file doesn't produce AV >>but it not working anyway). I'm sure
it used to work because I have PDF file generated using TPrinter and
CUPS-PDF at some point.
I haven't a chance to try it yet. Just in case it's non exactly trivial,
how can the AV be fixed? I was only accessing the MAC over a bad
connection, which made pretty >everything complicated.
I'm also sure it used to work.
Please submit a report so it wont be forgotten.
http://mantis.freepascal.org/view.php?id=28455
Regards, Martin.
The problem occurs because the bitmap is being freed before
Printer.EndDoc. It is at this point that the bitmap data is used, but
because it was already freed an AV occurs. I have actually fixed the
problem, but in my current implementation resources are only be freed at
program end. Which is not good if somebody are printing a lot. So I have
not committed the fix, I have another plan and will try again soon.
In the mean time, the workaround it's easy (this is not the fix I
mentioned before which would patch the LCL+Printer support). Just create
the bitmap before Print.BeginDoc and free it after Print.EndDoc. That
should work.
Jesus Reyes A.
--
Usando el cliente de correo de Opera: http://www.opera.com/mail/
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus