set_file_limits(reset => 1) now resets to defaults, not zero.
authorTony Cook <tony@develop-help.com>
Mon, 4 Jun 2012 09:58:24 +0000 (19:58 +1000)
committerTony Cook <tony@develop-help.com>
Mon, 4 Jun 2012 09:58:24 +0000 (19:58 +1000)
Previously reset would set max_bytes to 0 (unlimited), it now
sets max_bytes to it's default of 2**30.

lib/Imager/APIRef.pod
lib/Imager/Files.pod
limits.c
t/t1000files.t

index 87fcfa9..9827ff7 100644 (file)
@@ -992,7 +992,8 @@ i_img_dim width, height - maximum width and height.
 
 =item *
 
-size_t bytes - maximum size in memory in bytes
+size_t bytes - maximum size in memory in bytes.  A value of zero sets
+this limit to one gigabyte.
 
 =back
 
index 4eac640..050b198 100644 (file)
@@ -459,12 +459,15 @@ To set the limits, call the class method set_file_limits:
 You can pass any or all of the limits above, any limits you do not
 pass are left as they were.
 
-Any limit of zero is treated as unlimited.
+Any limit of zero for width or height is treated as unlimited.
+
+A limit of zero for bytes is treated as one gigabyte, but higher bytes
+limits can be set explicitly.
 
 By default, the width and height limits are zero, or unlimited.  The
 default memory size limit is one gigabyte.
 
-You can reset all limits to unlimited with the reset parameter:
+You can reset all limits to their defaults with the reset parameter:
 
   # no limits
   Imager->set_file_limits(reset=>1);
index bd13917..f7a7484 100644 (file)
--- a/limits.c
+++ b/limits.c
@@ -26,8 +26,10 @@ Setting a value of zero means that limit will be ignored.
 
 #include "imageri.h"
 
+#define DEF_BYTES_LIMIT 0x40000000
+
 static i_img_dim max_width, max_height;
-static size_t max_bytes = 0x40000000;
+static size_t max_bytes = DEF_BYTES_LIMIT;
 
 /*
 =item i_set_image_file_limits(width, height, bytes)
@@ -51,7 +53,8 @@ i_img_dim width, height - maximum width and height.
 
 =item *
 
-size_t bytes - maximum size in memory in bytes
+size_t bytes - maximum size in memory in bytes.  A value of zero sets
+this limit to one gigabyte.
 
 =back
 
@@ -79,7 +82,7 @@ i_set_image_file_limits(i_img_dim width, i_img_dim height, size_t bytes) {
 
   max_width = width;
   max_height = height;
-  max_bytes = bytes;
+  max_bytes = bytes ? bytes : DEF_BYTES_LIMIT;
 
   return 1;
 }
index 0557f37..cfad2c8 100644 (file)
@@ -62,11 +62,11 @@ is_deeply([ Imager->get_file_limits() ], [ 100, 150, 10000 ],
          "check all values now set");
 ok(Imager->set_file_limits(reset=>1, height => 99),
    "set height and reset");
-is_deeply([ Imager->get_file_limits() ], [ 0, 99, 0 ],
+is_deeply([ Imager->get_file_limits() ], [ 0, 99, 0x40000000 ],
          "check only height is set");
 ok(Imager->set_file_limits(reset=>1),
    "just reset");
-is_deeply([ Imager->get_file_limits() ], [ 0, 0, 0 ],
+is_deeply([ Imager->get_file_limits() ], [ 0, 0, 0x40000000 ],
          "check all are reset");
 
 # test error handling for loading file handers