Make sure that values of absolute symbols fit in 16 bits.
diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h
index a22a4df..9e517c0 100644
--- a/tools/winebuild/build.h
+++ b/tools/winebuild/build.h
@@ -63,7 +63,7 @@
typedef struct
{
- int value;
+ unsigned short value;
} ORD_ABS;
typedef struct
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index f9ef406..3cf3722 100644
--- a/tools/winebuild/parser.c
+++ b/tools/winebuild/parser.c
@@ -355,6 +355,11 @@
error( "Expected number value, got '%s'\n", token );
return 0;
}
+ if (value < -0x8000 || value > 0xffff)
+ {
+ error( "Value %d for absolute symbol doesn't fit in 16 bits\n", value );
+ value = 0;
+ }
odp->u.abs.value = value;
return 1;
}