[Swfed-svn] swfed-svn [558] getShapeData のメモリリークを解消 (0. 38 でのデグレード )

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 4月 8日 (金) 17:48:46 JST


Revision: 558
          http://sourceforge.jp/projects/swfed/svn/view?view=rev&revision=558
Author:   yoya
Date:     2011-04-08 17:48:46 +0900 (Fri, 08 Apr 2011)

Log Message:
-----------
getShapeData のメモリリークを解消 (0.38 でのデグレード)

Modified Paths:
--------------
    trunk/src/bitmap_util.c
    trunk/src/php_swfed.c


-------------- next part --------------
Modified: trunk/src/bitmap_util.c
===================================================================
--- trunk/src/bitmap_util.c	2011-04-08 07:54:32 UTC (rev 557)
+++ trunk/src/bitmap_util.c	2011-04-08 08:48:46 UTC (rev 558)
@@ -41,7 +41,7 @@
               break;
           case 0xDA: // SOS
               return 1; // not found
-        default:
+          default:
             if (isJPEG_SOFXX(marker2)) {
                 *width  = 0x100 * data[idx + 7] + data[idx + 8];
                 *height = 0x100 * data[idx + 5] + data[idx + 6];

Modified: trunk/src/php_swfed.c
===================================================================
--- trunk/src/php_swfed.c	2011-04-08 07:54:32 UTC (rev 557)
+++ trunk/src/php_swfed.c	2011-04-08 08:48:46 UTC (rev 558)
@@ -766,18 +766,21 @@
 PHP_METHOD(swfed, getShapeData) {
     long cid = 0;
     swf_object_t *swf = NULL;
-    unsigned char *data_ref = NULL;
+    unsigned char *data = NULL, *new_buff;
     unsigned long data_len = 0;
     if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &cid) == FAILURE) {
         RETURN_FALSE;
     }
     swf = get_swf_object(getThis() TSRMLS_CC);
-    data_ref = swf_object_get_shapedata(swf, cid, &data_len);
-    if (data_ref == NULL) {
+    data = swf_object_get_shapedata(swf, cid, &data_len);
+    if (data == NULL) {
         fprintf(stderr, "getShapeData: Can't swf_object_get_shapedata (cid=%d)\n", cid);
         RETURN_FALSE;
     }
-    RETURN_STRINGL(data_ref, data_len, 1);
+    new_buff = emalloc(data_len);
+    memcpy(new_buff, data, data_len);
+    free(data);
+    RETURN_STRINGL(new_buff, data_len, 0);
 }
 
 PHP_METHOD(swfed, replaceShapeData) {



Swfed-svn メーリングリストの案内
Back to archive index