Follow-up Comment #8, bug #24298 (project freeciv):

This appears to be an upstream issue in gdk-pixbuf. I just reported Bug 766842
- Different behavior of GDK_INTERP_NEAREST with gdk_pixbuf_composite () versus
other interpolation types:
https://bugzilla.gnome.org/show_bug.cgi?id=766842

I have occasionally seen this issue, but it has been difficult to reproduce. I
finally found semi-reliable steps to reproduce the crash using the Homebrew
binary of Freeciv 2.5.4 gui-gtk-2.0 on Mac OS X 10.11.5 (15F34) and a
particular saved game, so I have been able to see and debug the problem with
`lldb` attached.

The crash is occurring within pixops_composite_nearest_noscale () (called by
gdk_pixbuf_composite () when not scaling and the interpolation type is
GDK_INTERP_NEAREST) because of an invalid memory read. In my case, the src
pixbuf is 64x48 and the destination pixbuf is 63x47. Because the `offset_y'
passed to gdk_pixbuf_composite () is -2, this means that the bottom row of
pixels in the destination rectangle is not within the source rectangle.

I eval'd a call to gdk_pixbuf_save () and the src pixbuf is the image of the
Artillery unit (available with the discovery of Machine Tools). I am using the
amplio2 tileset when I observe the crash.

One possible work-around is to use interpolation type GDK_INTERP_BILINEAR
within canvas_put_sprite (). Alternatively, the `offset_y' passed to
gdk_pixbuf_composite () could be corrected so that no part of the destination
rectangle is not within the source rectangle.

    _______________________________________________________

Reply to this item at:

  <http://gna.org/bugs/?24298>

_______________________________________________
  Message sent via/by Gna!
  http://gna.org/


_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to