iliaa           Wed Nov 17 18:43:31 2004 EDT

  Modified files:              (Branch: PHP_4_3)
    /php-src/ext/dio    dio.c 
  Log:
  MFH: Gracefully handle allocation failure.
  
  
http://cvs.php.net/diff.php/php-src/ext/dio/dio.c?r1=1.21.2.10&r2=1.21.2.11&ty=u
Index: php-src/ext/dio/dio.c
diff -u php-src/ext/dio/dio.c:1.21.2.10 php-src/ext/dio/dio.c:1.21.2.11
--- php-src/ext/dio/dio.c:1.21.2.10     Thu Sep  2 23:36:21 2004
+++ php-src/ext/dio/dio.c       Wed Nov 17 18:43:31 2004
@@ -79,8 +79,10 @@
 static void _dio_close_fd(zend_rsrc_list_entry *rsrc TSRMLS_DC)
 {
        php_fd_t *f = (php_fd_t *) rsrc->ptr;
-       close(f->fd);
-       free(f);
+       if (f) {
+               close(f->fd);
+               free(f);
+       }
 }
 
 #define RDIOC(c) REGISTER_LONG_CONSTANT(#c, c, CONST_CS | CONST_PERSISTENT)
@@ -142,10 +144,13 @@
        php_info_print_table_end();
 }
 
-static void new_php_fd(php_fd_t **f, int fd)
+static int new_php_fd(php_fd_t **f, int fd)
 {
-       *f = malloc(sizeof(php_fd_t));
+       if (!(*f = malloc(sizeof(php_fd_t)))) {
+               return 0;
+       }
        (*f)->fd = fd;
+       return 1;
 }
 
 /* {{{ proto resource dio_open(string filename, int flags[, int mode])
@@ -179,7 +184,10 @@
                RETURN_FALSE;
        }
 
-       new_php_fd(&f, fd);
+       
+       if (!new_php_fd(&f, fd)) {
+               RETURN_FALSE;
+       }
        ZEND_REGISTER_RESOURCE(return_value, f, le_fd);
 }
 /* }}} */
@@ -421,7 +429,9 @@
                        RETURN_FALSE;
                }
 
-               new_php_fd(&new_f, fcntl(f->fd, cmd, Z_LVAL_P(arg)));
+               if (!new_php_fd(&new_f, fcntl(f->fd, cmd, Z_LVAL_P(arg)))) {
+                       RETURN_FALSE;
+               }
                ZEND_REGISTER_RESOURCE(return_value, new_f, le_fd);
                break;
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to