changeset 14223:af4da95a33d1

vma-iter: Avoid empty intervals. * lib/vma-iter.c (vma_iterate) [IRIX, OSF/1]: Don't call the callback on an empty interval.
author Bruno Haible <bruno@clisp.org>
date Mon, 24 Jan 2011 11:05:18 +0100
parents 3d689d237677
children ba1ea5e60c45
files ChangeLog lib/vma-iter.c
diffstat 2 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-24  Bruno Haible  <bruno@clisp.org>
+
+	vma-iter: Avoid empty intervals.
+	* lib/vma-iter.c (vma_iterate) [IRIX, OSF/1]: Don't call the callback
+	on an empty interval.
+
 2011-01-24  Jim Meyering  <meyering@redhat.com>
 
 	u64: remove unnecessary #include
--- a/lib/vma-iter.c
+++ b/lib/vma-iter.c
@@ -331,10 +331,12 @@
         {
           /* Consider [start,end-1] \ [auxmap_start,auxmap_end-1]
              = [start,auxmap_start-1] u [auxmap_end,end-1].  */
-          if (callback (data, start, auxmap_start, flags))
-            break;
-          if (callback (data, auxmap_end, end, flags))
-            break;
+          if (start < auxmap_start)
+            if (callback (data, start, auxmap_start, flags))
+              break;
+          if (auxmap_end - 1 < end - 1)
+            if (callback (data, auxmap_end, end, flags))
+              break;
         }
       else
         {