isl_basic_set_opt: avoid invalid access on error path
[platform/upstream/isl.git] / isl_flow.c
index 1129d04..8dca5c4 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright 2010      INRIA Saclay
  * Copyright 2012      Universiteit Leiden
  *
- * Use of this software is governed by the GNU LGPLv2.1 license
+ * Use of this software is governed by the MIT license
  *
  * Written by Sven Verdoolaege, Leiden Institute of Advanced Computer Science,
  * Universiteit Leiden, Niels Bohrweg 1, 2333 CA Leiden, The Netherlands
@@ -17,7 +17,7 @@
 #include <isl/set.h>
 #include <isl/map.h>
 #include <isl/flow.h>
-#include <isl_qsort.h>
+#include <isl_sort.h>
 
 enum isl_restriction_type {
        isl_restriction_type_empty,
@@ -269,7 +269,7 @@ __isl_give isl_access_info *isl_access_info_add_source(
        isl_ctx *ctx;
 
        if (!acc)
-               return NULL;
+               goto error;
        ctx = isl_map_get_ctx(acc->sink.map);
        isl_assert(ctx, acc->n_must + acc->n_may < acc->max_source, goto error);
        
@@ -340,8 +340,9 @@ static __isl_give isl_access_info *isl_access_info_sort_sources(
        if (acc->n_must <= 1)
                return acc;
 
-       isl_quicksort(acc->source, acc->n_must, sizeof(struct isl_labeled_map),
-               access_sort_cmp, acc);
+       if (isl_sort(acc->source, acc->n_must, sizeof(struct isl_labeled_map),
+                   access_sort_cmp, acc) < 0)
+               return isl_access_info_free(acc);
 
        return acc;
 }