Skip to content

Commit 24d9d04

Browse files
committed
Fix memory issues. Cleanup code.
1 parent 27c10c6 commit 24d9d04

13 files changed

+100
-55
lines changed

.idea/php.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/php7-mapnik.iml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

agg_renderer.cc

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ void php_mapnik_agg_renderer_free_storage(zend_object *object TSRMLS_DC)
1515
{
1616
php_mapnik_agg_renderer_object *obj;
1717
obj = php_mapnik_agg_renderer_fetch_object(object);
18+
delete obj->agg_renderer;
1819
zend_object_std_dtor(object TSRMLS_DC);
1920
}
2021

@@ -60,31 +61,27 @@ PHP_METHOD(AggRenderer, __construct)
6061
agg_renderer = new mapnik::agg_renderer<mapnik::image_rgba8>(*map, *image);
6162
} else {
6263
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\AggRenderer::__construct");
63-
RETURN_FALSE;
6464
}
6565

66-
assert(agg_renderer != NULL);
67-
6866
obj = Z_PHP_MAPNIK_AGG_RENDERER_P(getThis());
6967
obj->agg_renderer = agg_renderer;
7068
}
7169

7270
PHP_METHOD(AggRenderer, apply)
7371
{
74-
struct php_mapnik_agg_renderer_object *obj;
72+
struct php_mapnik_agg_renderer_object *obj = Z_PHP_MAPNIK_AGG_RENDERER_P(getThis());
7573
mapnik::agg_renderer<mapnik::image_rgba8> *agg_renderer;
7674

77-
obj = Z_PHP_MAPNIK_AGG_RENDERER_P(getThis());
7875
agg_renderer = obj->agg_renderer;
7976

8077
try {
8178
agg_renderer->apply();
8279
} catch (const mapnik::datasource_exception & ex) {
8380
php_mapnik_throw_exception(ex.what());
84-
RETURN_FALSE;
81+
return;
8582
} catch (const std::runtime_error & ex) {
8683
php_mapnik_throw_exception(ex.what());
87-
RETURN_FALSE;
84+
return;
8885
}
8986

9087
RETURN_TRUE;

box2d.cc

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ void php_mapnik_box2d_free_storage(zend_object *object TSRMLS_DC)
1212
{
1313
php_mapnik_box2d_object *obj;
1414
obj = php_mapnik_box2d_fetch_object(object);
15+
delete obj->box2d;
1516
zend_object_std_dtor(object TSRMLS_DC);
1617
}
1718

@@ -33,7 +34,7 @@ zend_object * php_mapnik_box2d_new(zend_class_entry *ce TSRMLS_DC) {
3334
PHP_METHOD(Box2D, __construct)
3435
{
3536
php_mapnik_box2d_object *obj;
36-
mapnik::box2d<double> *box2d;
37+
mapnik::box2d<double> *box2d = NULL;
3738
double minX, minY, maxX, maxY;
3839

3940
if (ZEND_NUM_ARGS() == 0) {
@@ -50,7 +51,6 @@ PHP_METHOD(Box2D, __construct)
5051
box2d = new mapnik::box2d<double>(minX, minY, maxX, maxY);
5152
} else {
5253
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Box2D::__construct");
53-
RETURN_FALSE;
5454
}
5555

5656
obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
@@ -59,32 +59,28 @@ PHP_METHOD(Box2D, __construct)
5959

6060
PHP_METHOD(Box2D, minX)
6161
{
62-
php_mapnik_box2d_object *obj;
63-
obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
62+
php_mapnik_box2d_object *obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
6463

6564
RETURN_DOUBLE(obj->box2d->minx());
6665
}
6766

6867
PHP_METHOD(Box2D, minY)
6968
{
70-
php_mapnik_box2d_object *obj;
71-
obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
69+
php_mapnik_box2d_object *obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
7270

7371
RETURN_DOUBLE(obj->box2d->miny());
7472
}
7573

7674
PHP_METHOD(Box2D, maxX)
7775
{
78-
php_mapnik_box2d_object *obj;
79-
obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
76+
php_mapnik_box2d_object *obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
8077

8178
RETURN_DOUBLE(obj->box2d->maxx());
8279
}
8380

8481
PHP_METHOD(Box2D, maxY)
8582
{
86-
php_mapnik_box2d_object *obj;
87-
obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
83+
php_mapnik_box2d_object *obj = Z_PHP_MAPNIK_BOX2D_P(getThis());
8884

8985
RETURN_DOUBLE(obj->box2d->maxy());
9086
}

datasource_cache.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ PHP_METHOD(DatasourceCache, registerDatasources)
1717

1818
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &path) == FAILURE) {
1919
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\DatasourceCache::registerDatasources");
20-
RETURN_FALSE;
20+
return;
2121
}
2222

2323
std::string path_str(path->val, path->len);

image.cc

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ void php_mapnik_image_free_storage(zend_object *object TSRMLS_DC)
1313
{
1414
php_mapnik_image_object *obj;
1515
obj = php_mapnik_image_fetch_object(object);
16+
delete obj->image;
1617
zend_object_std_dtor(object TSRMLS_DC);
1718
}
1819

@@ -33,8 +34,8 @@ zend_object * php_mapnik_image_new(zend_class_entry *ce TSRMLS_DC) {
3334

3435
PHP_METHOD(Image, __construct)
3536
{
36-
php_mapnik_image_object *obj;
37-
mapnik::image_rgba8 *image;
37+
php_mapnik_image_object *obj = Z_PHP_MAPNIK_IMAGE_P(getThis());
38+
mapnik::image_rgba8 *image = NULL;
3839

3940
long width, height;
4041

@@ -48,16 +49,14 @@ PHP_METHOD(Image, __construct)
4849
image = new mapnik::image_rgba8(width, height);
4950
} else {
5051
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Image::__construct");
51-
RETURN_FALSE;
5252
}
5353

54-
obj = Z_PHP_MAPNIK_IMAGE_P(getThis());
5554
obj->image = image;
5655
}
5756

5857
PHP_METHOD(Image, saveToFile)
5958
{
60-
php_mapnik_image_object *obj;
59+
php_mapnik_image_object *obj = Z_PHP_MAPNIK_IMAGE_P(getThis());
6160
zend_string *file;
6261
zend_string *format = zend_string_init("png", sizeof("png") - 1, 1);
6362

@@ -69,32 +68,31 @@ PHP_METHOD(Image, saveToFile)
6968
&format) == FAILURE
7069
) {
7170
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Image::saveToFile");
72-
RETURN_FALSE;
71+
return;
7372
}
7473

75-
obj = Z_PHP_MAPNIK_IMAGE_P(getThis());
7674
std::string file_str(file->val, file->len);
7775
std::string format_str(format->val, format->len);
7876

7977
try {
8078
mapnik::save_to_file(*obj->image, file_str, format_str);
8179
} catch (const mapnik::image_writer_exception & ex) {
8280
php_mapnik_throw_exception(ex.what());
83-
RETURN_FALSE;
81+
return;
8482
} catch (const std::exception & ex) {
8583
php_mapnik_throw_exception(ex.what());
86-
RETURN_FALSE;
84+
return;
8785
} catch (...) {
8886
php_mapnik_throw_exception("Unknown exception thrown while saving image to file.");
89-
RETURN_FALSE;
87+
return;
9088
}
9189

9290
RETURN_TRUE;
9391
}
9492

9593
PHP_METHOD(Image, saveToString)
9694
{
97-
php_mapnik_image_object *obj;
95+
php_mapnik_image_object *obj = Z_PHP_MAPNIK_IMAGE_P(getThis());
9896
zend_string *format = zend_string_init("png", sizeof("png") - 1, 1);
9997
std::string image_str;
10098

@@ -108,20 +106,18 @@ PHP_METHOD(Image, saveToString)
108106
RETURN_FALSE;
109107
}
110108

111-
obj = Z_PHP_MAPNIK_IMAGE_P(getThis());
112-
113109
try {
114110
std::string format_str(format->val, format->len);
115111
image_str = mapnik::save_to_string(*obj->image, format_str);
116112
} catch (const mapnik::image_writer_exception & ex) {
117113
php_mapnik_throw_exception(ex.what());
118-
RETURN_FALSE;
114+
return;
119115
} catch (const std::exception & ex) {
120116
php_mapnik_throw_exception(ex.what());
121-
RETURN_FALSE;
117+
return;
122118
} catch (...) {
123119
php_mapnik_throw_exception("Unknown exception thrown while saving image to string.");
124-
RETURN_FALSE;
120+
return;
125121
}
126122

127123
RETURN_STRINGL(image_str.c_str(), image_str.size());

map.cc

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ void php_mapnik_map_free_storage(zend_object *object TSRMLS_DC)
1616
{
1717
php_mapnik_map_object *obj;
1818
obj = php_mapnik_map_fetch_object(object);
19+
delete obj->map;
1920
zend_object_std_dtor(object TSRMLS_DC);
2021
}
2122

@@ -38,7 +39,7 @@ zend_object * php_mapnik_map_new(zend_class_entry *ce TSRMLS_DC)
3839
PHP_METHOD(Map, __construct)
3940
{
4041
php_mapnik_map_object *obj = Z_PHP_MAPNIK_MAP_P(getThis());
41-
mapnik::Map* map;
42+
mapnik::Map* map = NULL;
4243

4344
long width, height;
4445
zend_string *srs;
@@ -150,6 +151,7 @@ PHP_METHOD(Map, zoom)
150151

151152
if (::zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &zoom) == FAILURE) {
152153
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::zoom");
154+
return;
153155
}
154156

155157
obj->map->zoom(zoom);
@@ -169,6 +171,7 @@ PHP_METHOD(Map, pan)
169171

170172
if (::zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &x, &y) == FAILURE) {
171173
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::pan");
174+
return;
172175
}
173176

174177
obj->map->pan(x, y);
@@ -182,6 +185,7 @@ PHP_METHOD(Map, panAndZoom)
182185

183186
if (::zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lld", &x, &y, &zoom) == FAILURE) {
184187
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::panAndZoom");
188+
return;
185189
}
186190

187191
obj->map->pan_and_zoom(x, y, zoom);
@@ -203,6 +207,7 @@ PHP_METHOD(Map, zoomToBox)
203207
php_mapnik_box2d_ce) == FAILURE
204208
) {
205209
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::zoomToBox");
210+
return;
206211
}
207212

208213
box2d_obj = Z_PHP_MAPNIK_BOX2D_P(box2d_zval);
@@ -227,8 +232,10 @@ PHP_METHOD(Map, registerFonts)
227232
fonts_registered = obj->map->register_fonts(path_str);
228233
} catch (const std::exception & ex) {
229234
php_mapnik_throw_exception(ex.what());
235+
return;
230236
} catch (...) {
231237
php_mapnik_throw_exception("Unknown exception thrown while registering font path.");
238+
return;
232239
}
233240

234241
if (fonts_registered) {
@@ -257,6 +264,7 @@ PHP_METHOD(Map, setBasePath)
257264
&path) == FAILURE
258265
) {
259266
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::setBaseBath");
267+
return;
260268
}
261269

262270
obj->map->set_base_path(path->val);
@@ -276,6 +284,7 @@ PHP_METHOD(Map, setWidth)
276284

277285
if (::zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "l", &width) == FAILURE) {
278286
php_mapnik_throw_exception("Wrong argument passed to \\Mapnik\\Map::setWidth");
287+
return;
279288
}
280289

281290
obj->map->set_width(width);
@@ -295,6 +304,7 @@ PHP_METHOD(Map, setHeight)
295304

296305
if (::zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "l", &height) == FAILURE) {
297306
php_mapnik_throw_exception("Wrong argument passed to \\Mapnik\\Map::setHeight");
307+
return;
298308
}
299309

300310
obj->map->set_height(height);
@@ -314,6 +324,7 @@ PHP_METHOD(Map, resize)
314324
&height) == FAILURE
315325
) {
316326
php_mapnik_throw_exception("Wrong argument passed to \\Mapnik\\Map::resize");
327+
return;
317328
}
318329

319330
obj->map->resize(width, height);
@@ -333,6 +344,7 @@ PHP_METHOD(Map, setSrs)
333344

334345
if (::zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "S", &srs) == FAILURE) {
335346
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::setSrs");
347+
return;
336348
}
337349

338350
obj->map->set_srs(srs->val);
@@ -360,6 +372,7 @@ PHP_METHOD(Map, setBackgroundImage)
360372
&image_filename) == FAILURE
361373
) {
362374
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::setBackgroundImage");
375+
return;
363376
}
364377

365378
obj->map->set_background_image(image_filename->val);
@@ -380,6 +393,7 @@ PHP_METHOD(Map, setBackgroundImageOpacity)
380393

381394
if (::zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "d", &opacity) == FAILURE) {
382395
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::setBackgroundImageOpacity");
396+
return;
383397
}
384398

385399
obj->map->set_background_image_opacity(opacity);
@@ -445,6 +459,7 @@ PHP_METHOD(Map, setMaximumExtent)
445459
php_mapnik_box2d_ce) == FAILURE
446460
) {
447461
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::setMaximumExtent");
462+
return;
448463
}
449464

450465
php_mapnik_box2d_object *box2d_obj = Z_PHP_MAPNIK_BOX2D_P(box2d_zval);
@@ -515,6 +530,7 @@ PHP_METHOD(Map, setBufferSize)
515530

516531
if (::zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "l", &buffer_size) == FAILURE) {
517532
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::setBufferSize");
533+
return;
518534
}
519535

520536
obj->map->set_buffer_size(buffer_size);
@@ -590,6 +606,7 @@ PHP_METHOD(Map, removeStyle)
590606

591607
if (::zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, "S", &style) == FAILURE) {
592608
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::removeStyle");
609+
return;
593610
}
594611

595612
obj->map->remove_style(style->val);
@@ -619,10 +636,12 @@ PHP_METHOD(Map, setAspectFixMode)
619636
&aspect_fix_mode) == FAILURE
620637
) {
621638
php_mapnik_throw_exception("Wrong arguments passed to \\Mapnik\\Map::setAspectFixMode");
639+
return;
622640
}
623641

624642
if (!(aspect_fix_mode >= mapnik::Map::GROW_BBOX && aspect_fix_mode <= mapnik::Map::RESPECT)) {
625643
php_mapnik_throw_exception("Invalid aspect fix mode.");
644+
return;
626645
}
627646

628647
obj->map->set_aspect_fix_mode(mapnik::Map::aspect_fix_mode(aspect_fix_mode));

0 commit comments

Comments
 (0)