Skip to content

Commit 98b7591

Browse files
authored
Merge pull request #926 from zbjornson/fix-mem-leak
Fix memory leak in Canvas constructor
2 parents 4f4f857 + 5889663 commit 98b7591

4 files changed

Lines changed: 4 additions & 6 deletions

File tree

src/Canvas.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,6 @@ NAN_METHOD(Canvas::RegisterFont) {
617617

618618
Canvas::Canvas(Backend* backend) : ObjectWrap() {
619619
_backend = backend;
620-
this->backend()->createSurface();
621620
}
622621

623622
/*

src/backend/ImageBackend.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ ImageBackend::~ImageBackend()
1717

1818
cairo_surface_t* ImageBackend::createSurface()
1919
{
20+
assert(!this->surface);
2021
this->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
2122
assert(this->surface);
22-
Nan::AdjustExternalMemory(4 * width * height);
23+
Nan::AdjustExternalMemory(4 * width * height);
2324

2425
return this->surface;
2526
}
@@ -35,7 +36,6 @@ cairo_surface_t* ImageBackend::recreateSurface()
3536
return createSurface();
3637
}
3738

38-
3939
Nan::Persistent<FunctionTemplate> ImageBackend::constructor;
4040

4141
void ImageBackend::Initialize(Handle<Object> target)

src/backend/PdfBackend.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ using namespace v8;
1313
PdfBackend::PdfBackend(int width, int height)
1414
: Backend("pdf", width, height)
1515
{
16+
_closure = malloc(sizeof(closure_t));
17+
assert(_closure);
1618
createSurface();
1719
}
1820

@@ -28,8 +30,6 @@ PdfBackend::~PdfBackend()
2830

2931
cairo_surface_t* PdfBackend::createSurface()
3032
{
31-
_closure = malloc(sizeof(closure_t));
32-
assert(_closure);
3333
cairo_status_t status = closure_init((closure_t*)_closure, this->canvas, 0, PNG_NO_FILTERS);
3434
assert(status == CAIRO_STATUS_SUCCESS);
3535

src/backend/SvgBackend.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ SvgBackend::SvgBackend(int width, int height)
1515
{
1616
_closure = malloc(sizeof(closure_t));
1717
assert(_closure);
18-
1918
createSurface();
2019
}
2120

0 commit comments

Comments
 (0)