isl_basic_set_opt: avoid invalid access on error path
[platform/upstream/isl.git] / isl_ctx.c
index 1dff37b..6f02684 100644 (file)
--- a/isl_ctx.c
+++ b/isl_ctx.c
@@ -1,7 +1,7 @@
 /*
  * Copyright 2008-2009 Katholieke Universiteit Leuven
  *
- * 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, K.U.Leuven, Departement
  * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
@@ -9,14 +9,17 @@
 
 #include <isl_ctx_private.h>
 #include <isl/vec.h>
-#include <isl/options.h>
+#include <isl_options_private.h>
 
-void isl_handle_error(isl_ctx *ctx, int error, const char *msg,
+void isl_handle_error(isl_ctx *ctx, enum isl_error error, const char *msg,
        const char *file, int line)
 {
+       if (!ctx)
+               return;
+
        isl_ctx_set_error(ctx, error);
 
-       switch (isl_options_get_on_error(ctx)) {
+       switch (ctx->opt->on_error) {
        case ISL_ON_ERROR_WARN:
                fprintf(stderr, "%s:%d: %s\n", file, line, msg);
                return;
@@ -166,7 +169,7 @@ void isl_ctx_free(struct isl_ctx *ctx)
        isl_int_clear(ctx->normalize_gcd);
        isl_args_free(ctx->user_args, ctx->user_opt);
        if (ctx->opt_allocated)
-               free(ctx->opt);
+               isl_options_free(ctx->opt);
        free(ctx->stats);
        free(ctx);
 }