summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-07-12 13:16:53 +0300
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>2016-07-12 23:40:21 +0300
commit957122be98d9d32196769da48f9931aefa1a84f6 (patch)
treec683528459eb081e2e66a5b8528506181b6f27ff
parentb4dd0d89f8bae85180e6808215a549a5529163e2 (diff)
downloadmetacity-957122be98d9d32196769da48f9931aefa1a84f6.tar.gz
libmetacity: use fmod with doubles
-rw-r--r--libmetacity/meta-draw-spec.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/libmetacity/meta-draw-spec.c b/libmetacity/meta-draw-spec.c
index 3935f76a..d44ecaa2 100644
--- a/libmetacity/meta-draw-spec.c
+++ b/libmetacity/meta-draw-spec.c
@@ -19,6 +19,7 @@
#include "config.h"
#include <glib/gi18n-lib.h>
+#include <math.h>
#include <stdlib.h>
#include "meta-draw-spec-private.h"
@@ -678,10 +679,14 @@ do_operation (PosExpr *a,
a->d.double_val = a->d.double_val / b->d.double_val;
break;
case POS_OP_MOD:
- g_set_error (err, META_THEME_ERROR,
- META_THEME_ERROR_MOD_ON_FLOAT,
- _("Coordinate expression tries to use mod operator on a floating-point number"));
- return FALSE;
+ if (b->d.double_val == 0.0)
+ {
+ g_set_error (err, META_THEME_ERROR,
+ META_THEME_ERROR_DIVIDE_BY_ZERO,
+ _("Coordinate expression results in division by zero"));
+ return FALSE;
+ }
+ a->d.double_val = fmod (a->d.double_val, b->d.double_val);
case POS_OP_ADD:
a->d.double_val = a->d.double_val + b->d.double_val;
break;