@@ -348,6 +348,7 @@ vips_text_build( VipsObject *object )
348
348
VipsImage * image ;
349
349
cairo_surface_t * surface ;
350
350
cairo_t * cr ;
351
+ cairo_status_t status ;
351
352
352
353
if ( VIPS_OBJECT_CLASS ( vips_text_parent_class )-> build ( object ) )
353
354
return ( -1 );
@@ -417,15 +418,6 @@ vips_text_build( VipsObject *object )
417
418
return ( -1 );
418
419
}
419
420
420
- /* Cairo can't go over 32k pixels.
421
- */
422
- if ( extents .width >= 32768 ||
423
- extents .height >= 32768 ) {
424
- vips_error ( class -> nickname ,
425
- "%s" , _ ( "text image too large" ) );
426
- return ( -1 );
427
- }
428
-
429
421
image = t [0 ] = vips_image_new_memory ();
430
422
vips_image_init_fields ( image ,
431
423
extents .width , extents .height , 4 ,
@@ -444,6 +436,15 @@ vips_text_build( VipsObject *object )
444
436
CAIRO_FORMAT_ARGB32 ,
445
437
image -> Xsize , image -> Ysize ,
446
438
VIPS_IMAGE_SIZEOF_LINE ( image ) );
439
+
440
+ status = cairo_surface_status ( surface );
441
+ if ( status ) {
442
+ cairo_surface_destroy ( surface );
443
+ vips_error ( class -> nickname ,
444
+ "%s" , cairo_status_to_string ( status ) );
445
+ return ( -1 );
446
+ }
447
+
447
448
cr = cairo_create ( surface );
448
449
cairo_surface_destroy ( surface );
449
450
0 commit comments