diff options
Diffstat (limited to 'src/analysis/scan/exprs/range.c')
| -rw-r--r-- | src/analysis/scan/exprs/range.c | 17 | 
1 files changed, 10 insertions, 7 deletions
| diff --git a/src/analysis/scan/exprs/range.c b/src/analysis/scan/exprs/range.c index f97b15e..9716149 100644 --- a/src/analysis/scan/exprs/range.c +++ b/src/analysis/scan/exprs/range.c @@ -50,13 +50,13 @@ static void g_scan_compact_range_finalize(GScanCompactRange *);  /* Réduit une expression à une forme plus simple. */ -static ScanReductionState g_scan_compact_range_reduce(GScanCompactRange *, GScanContext *, GScanScope *, GScanExpression **); +static ScanReductionState g_scan_compact_range_reduce(const GScanCompactRange *, GScanContext *, GScanScope *, GScanExpression **);  /* Réduit une expression à une forme booléenne. */ -static bool g_scan_compact_range_reduce_to_boolean(GScanCompactRange *, GScanContext *, GScanScope *, GScanExpression **); +static bool g_scan_compact_range_reduce_to_boolean(const GScanCompactRange *, GScanContext *, GScanScope *, GScanExpression **);  /* Réalise l'intersection entre deux ensembles. */ -static GScanExpression *g_scan_compact_range_intersect(GScanCompactRange *expr, const GScanExpression *, GScanContext *, GScanScope *); +static GScanExpression *g_scan_compact_range_intersect(const GScanCompactRange *expr, const GScanExpression *, GScanContext *, GScanScope *); @@ -206,7 +206,8 @@ bool g_scan_compact_range_create(GScanCompactRange *range, GScanExpression *star  {      bool result;                            /* Bilan à retourner           */ -    result = true; +    result = g_scan_expression_create(G_SCAN_EXPRESSION(range), SRS_PENDING); +    if (!result) goto exit;      range->start = start;      g_object_ref(G_OBJECT(start)); @@ -214,6 +215,8 @@ bool g_scan_compact_range_create(GScanCompactRange *range, GScanExpression *star      range->end = end;      g_object_ref(G_OBJECT(end)); + exit: +      return result;  } @@ -240,7 +243,7 @@ bool g_scan_compact_range_create(GScanCompactRange *range, GScanExpression *star  *                                                                             *  ******************************************************************************/ -static ScanReductionState g_scan_compact_range_reduce(GScanCompactRange *expr, GScanContext *ctx, GScanScope *scope, GScanExpression **out) +static ScanReductionState g_scan_compact_range_reduce(const GScanCompactRange *expr, GScanContext *ctx, GScanScope *scope, GScanExpression **out)  {      ScanReductionState result;              /* Etat synthétisé à retourner */      GScanExpression *new_start;             /* Nouvelle réduction #1       */ @@ -298,7 +301,7 @@ static ScanReductionState g_scan_compact_range_reduce(GScanCompactRange *expr, G  *                                                                             *  ******************************************************************************/ -static bool g_scan_compact_range_reduce_to_boolean(GScanCompactRange *expr, GScanContext *ctx, GScanScope *scope, GScanExpression **out) +static bool g_scan_compact_range_reduce_to_boolean(const GScanCompactRange *expr, GScanContext *ctx, GScanScope *scope, GScanExpression **out)  {      bool result;                            /* Bilan à retourner           */      bool status;                            /* Bilan d'une comparaison     */ @@ -335,7 +338,7 @@ static bool g_scan_compact_range_reduce_to_boolean(GScanCompactRange *expr, GSca  *                                                                             *  ******************************************************************************/ -static GScanExpression *g_scan_compact_range_intersect(GScanCompactRange *expr, const GScanExpression *other, GScanContext *ctx, GScanScope *scope) +static GScanExpression *g_scan_compact_range_intersect(const GScanCompactRange *expr, const GScanExpression *other, GScanContext *ctx, GScanScope *scope)  {      GScanExpression *result;                /* Instance à retourner        */ | 
