Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
ghostscript-library
ghostscript-8.57-sgirdb.dif
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ghostscript-8.57-sgirdb.dif of Package ghostscript-library
--- src/gdevsgi.c +++ src/gdevsgi.c 2007-06-14 17:32:26.811161244 +0200 @@ -69,12 +69,20 @@ private int sgi_begin_page(gx_device_printer *bdev, FILE *pstream, sgi_cursor *pcur) { uint line_size = gdev_mem_bytes_per_scan_line((gx_device_printer*)bdev); - byte *data = (byte*)gs_malloc(bdev->memory, line_size, 1, "sgi_begin_page"); - IMAGE *header= (IMAGE*)gs_malloc(bdev->memory, sizeof(IMAGE),1,"sgi_begin_page"); + byte *data; + IMAGE *header; char filler= '\0'; int i; - if ((data == (byte*)0)||(header == (IMAGE*)0)) return -1; + data = (byte*)gs_malloc(bdev->memory, line_size, 1, "sgi_begin_page"); + if (data == (byte*)0) return -1; + + header= (IMAGE*)gs_malloc(bdev->memory, sizeof(IMAGE),1,"sgi_begin_page"); + if (header == (IMAGE*)0) + { + gs_free(bdev->memory,data,line_size,1,"sgi_begin_page(failed)"); + return -1; + } bzero(header,sizeof(IMAGE)); header->imagic = IMAGIC; @@ -95,6 +103,7 @@ sgi_begin_page(gx_device_printer *bdev, pcur->bpp = bdev->color_info.depth; pcur->line_size = line_size; pcur->data = data; + gs_free(bdev->memory,header,sizeof(IMAGE),1,"sgi_begin_page"); return 0; } @@ -115,12 +124,21 @@ sgi_print_page(gx_device_printer *pdev, int code = sgi_begin_page(bdev, pstream, &cur); uint bpe, mask; int separation; - long *rowsizes=(long*)gs_malloc(pdev->memory, 4,3*bdev->height,"sgi_print_page"); + long *rowsizes; byte *edata ; long lastval; int rownumber; -#define aref2(a,b) a*bdev->height+b - edata = (byte*)gs_malloc(pdev->memory, cur.line_size, 1, "sgi_begin_page"); +#define aref2(a,b) ((a)*bdev->height)+(b) + if(code<0) return(-1); + rowsizes = (long*)gs_malloc(pdev->memory,sizeof(long),3*bdev->height,"sgi_print_page"); + if(rowsizes==(long*)NULL) return(-1); + bzero(rowsizes,sizeof(long)*3*bdev->height); + edata = (byte*)gs_malloc(pdev->memory, cur.line_size, 1, "sgi_begin_page"); + if(edata==(byte*)NULL) + { + gs_free(pdev->memory,rowsizes,sizeof(long),3*bdev->height,"sgi_print_page"); + return(-1); + } if((code<0)||(rowsizes==(long*)NULL)||(edata==(byte*)NULL)) return(-1); fwrite(rowsizes,sizeof(long),3*bdev->height,pstream); /* rowstarts */ fwrite(rowsizes,sizeof(long),3*bdev->height,pstream); /* rowsizes */ @@ -215,9 +233,8 @@ sgi_print_page(gx_device_printer *pdev, fputc((char)(lastval>>16),pstream); fputc((char)(lastval>>8),pstream); fputc((char)(lastval),pstream);} - gs_free(pdev->memory, (char*)cur.data, cur.line_size, 1, - "sgi_print_page(done)"); - gs_free(pdev->memory, (char*)edata, cur.line_size, 1, "sgi_print_page(done)"); - gs_free(pdev->memory, (char*)rowsizes,4,3*bdev->height,"sgi_print_page(done)"); + gs_free(pdev->memory, cur.data, cur.line_size, 1, "sgi_print_page(done)"); + gs_free(pdev->memory, edata, cur.line_size, 1, "sgi_print_page(done)"); + gs_free(pdev->memory, rowsizes,4,3*bdev->height,"sgi_print_page(done)"); return (code < 0 ? code : 0); }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor