Index: /trunk/Ohana/src/libdvo/include/dvo.h
===================================================================
--- /trunk/Ohana/src/libdvo/include/dvo.h	(revision 6642)
+++ /trunk/Ohana/src/libdvo/include/dvo.h	(revision 6643)
@@ -344,5 +344,5 @@
 SkyTable  *SkyTableLoadOptimal 	   PROTO((char *catdir, char *SKYFILE, char *GSCFILE, int depth, int VERBOSE));
 int        SkyTableSetDepth    	   PROTO((SkyTable *sky, int depth));
-SkyRegion *SkyRegionByPoint    	   PROTO((SkyTable *table, int depth, double ra, double dec));
+SkyList   *SkyRegionByPoint    	   PROTO((SkyTable *table, int depth, double ra, double dec));
 SkyList   *SkyListByPoint      	   PROTO((SkyTable *table, double ra, double dec));
 SkyList   *SkyListByRadius     	   PROTO((SkyTable *table, int depth, double RA, double DEC, double radius));
Index: /trunk/Ohana/src/libdvo/src/skyregion_ops.c
===================================================================
--- /trunk/Ohana/src/libdvo/src/skyregion_ops.c	(revision 6642)
+++ /trunk/Ohana/src/libdvo/src/skyregion_ops.c	(revision 6643)
@@ -9,8 +9,14 @@
 
 /* find region which overlaps c at given depth (-1 : populated ) */
-SkyRegion *SkyRegionByPoint (SkyTable *table, int depth, double ra, double dec) {
+SkyList *SkyRegionByPoint (SkyTable *table, int depth, double ra, double dec) {
   
   int i, Ns, Ne, No;
   SkyRegion *region;
+  SkyList *list;
+
+  ALLOCATE (list, SkyList, 1);
+  ALLOCATE (list[0].regions,  SkyRegion *, 1);
+  ALLOCATE (list[0].filename,  char *, 1);
+  list[0].Nregions = 0;
 
   region = table[0].regions;
@@ -29,8 +35,8 @@
       break;
     }
-    if (No == -1) return (NULL);
-    if ((depth == -1) && (region[No].table)) return (&region[No]);
-    if (depth == region[No].depth) return (&region[No]);
-    if ((depth > region[No].depth) && !region[No].child) return (NULL);
+    if (No == -1) return (list);
+    if ((depth == -1) && (region[No].table)) break;
+    if (depth == region[No].depth) break;
+    if ((depth > region[No].depth) && !region[No].child) return (list);
 
     /* need to check Ns, Ne, or guarantee valid range */
@@ -38,4 +44,9 @@
     Ne = region[No].childE;
   }
+
+  list[0].regions[0] = &region[No];
+  list[0].filename[0] = table[0].filename[No];
+  list[0].Nregions = 1;
+  return (list);
 }
 
@@ -74,6 +85,9 @@
     list[0].filename[N] = table[0].filename[No];
     N++;
-    CHECK_REALLOCATE (list[0].regions, SkyRegion *, NREGIONS, N, 10);
-    CHECK_REALLOCATE (list[0].filename, char *, NREGIONS, N, 10);
+    if (N >= NREGIONS) {
+	NREGIONS += 10;
+	REALLOCATE (list[0].regions, SkyRegion *, NREGIONS);
+	REALLOCATE (list[0].filename, char *, NREGIONS);
+    }
     list[0].Nregions = N;
 
@@ -236,6 +250,9 @@
       list[0].filename[Nnew] = table[0].filename[i];
       Nnew ++;
-      CHECK_REALLOCATE (list[0].regions, SkyRegion *, NNEW, Nnew, 50);
-      CHECK_REALLOCATE (list[0].filename, char *, NNEW, Nnew, 50);
+      if (Nnew >= NNEW) {
+	  NNEW += 50;
+	  REALLOCATE (list[0].regions, SkyRegion *, NNEW);
+	  REALLOCATE (list[0].filename, char *, NNEW);
+      }
     }
   }
