Fix bug in SET_FARVAR.

The (val) parameter needs to be evaluated before setting the segment.
diff --git a/src/farptr.h b/src/farptr.h
index e142843..4759a08 100644
--- a/src/farptr.h
+++ b/src/farptr.h
@@ -69,8 +69,9 @@
     SET_SEG(ES, (seg));                         \
     GET_VAR(ES, (var)); })
 #define SET_FARVAR(seg, var, val) do {          \
+        typeof(var) __sfv_val = (val);          \
         SET_SEG(ES, (seg));                     \
-        SET_VAR(ES, (var), val);                \
+        SET_VAR(ES, (var), __sfv_val);          \
     } while (0)
 
 #define PTR_TO_SEG(p) ((((u32)(p)) >> 4) & 0xf000)