[cairo] cairo_surface_create_similar_image() crashes on W32
LRN
lrn1986 at gmail.com
Fri Aug 23 02:43:00 PDT 2013
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
A simple testcase is attached.
Compile it with:
g++ ./crash.cpp -o ./crash.exe -lcairo -I/mingw/include/cairo
run it:
$ ./cairo-gdi-demo.exe
Assertion failed!
Program: C:\foobar\cairo-gdi-demo.exe
File: ../../cairo-1.12.14/src/cairo-surface.c, Line 930
Expression: CAIRO_REFERENCE_COUNT_HAS_REFERENCE (&surface->ref_count)
This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.
- --
O< ascii ribbon - stop html email! - www.asciiribbon.org
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (MingW32)
iQEcBAEBAgAGBQJSFy6iAAoJEOs4Jb6SI2CwYKsH/jY/1XLRxFwu1W1ythFNY1/7
liN5vvMf2o7NMprQqmxZv6eNqUjjZ6iWGi4psYsRYf521rpgzyeQXlu49hE6e+0c
6TE7MsocBsxrp50OyhI1SwSVkWrH7HYJUTvk7+c3PD1/nFsVpuitYpL3CTL5oPd3
4rxI5wHvcpjr23ldPEzwpTV284QAJsVOstudhm3D5pwq0VLy9Cw+Fe0XD9CEEnP9
ANs9vpOe84jxAIQpFwk4yHbyDzI3Q1wrmGKHyguOEFbHZYm8XN/G1XGkzLgufCjX
OXRR85LYy8fLEtlRvdZL01U5EW8odDXZV2bPjmlhGu3r0aJcuzrRU9KqkXgG9aM=
=hJDZ
-----END PGP SIGNATURE-----
-------------- next part --------------
#include <windows.h>
#include "cairo-win32.h"
LRESULT onPaint (HWND hwnd, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps ;
HDC hdc;
cairo_surface_t *surface;
cairo_surface_t *isurface;
hdc = BeginPaint (hwnd, &ps);
surface = cairo_win32_surface_create (hdc);
isurface = cairo_surface_create_similar_image (surface, CAIRO_FORMAT_ARGB32, 24, 24);
cairo_surface_destroy (isurface);
cairo_surface_destroy (surface);
EndPaint (hwnd, &ps);
return 0;
}
LRESULT CALLBACK WndProc( HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam ) {
switch(msg) {
case WM_PAINT: return onPaint( hwnd, wParam, lParam );
default: return DefWindowProc(hwnd,msg,wParam,lParam);
}
}
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR args, int nShow)
{
MSG msg;
WNDCLASS wc;
HWND hwnd;
memset (&wc, 0, sizeof (wc));
wc.lpszClassName = "CairoDemo";
wc.hInstance = hInst;
wc.hbrBackground = GetSysColorBrush (COLOR_3DFACE);
wc.lpfnWndProc = WndProc;
wc.hCursor = LoadCursor (0, IDC_ARROW);
RegisterClass(&wc);
hwnd = CreateWindowA (wc.lpszClassName, "Cairo crash demo", WS_OVERLAPPEDWINDOW, 0, 0, 100, 100, 0, 0, hInst, 0);
ShowWindow (hwnd, SW_SHOWNORMAL);
while (GetMessage (&msg, 0, 0, 0) > 0)
{
TranslateMessage (&msg);
DispatchMessage (&msg);
}
return 0;
}
More information about the cairo
mailing list