I have tried to build emacs out-of-the-box and it did not work.
It seems that something has changed in handling of the size member
of struct Lisp_Vector and nobody cared about adjusting the DOS specific
files accordingly. Here is a patch to fix it.
Regards,
Juan M. Guerrero
diff -aprNU5 emacs-23.4.orig/src/dosfns.c emacs-23.4/src/dosfns.c
--- emacs-23.4.orig/src/dosfns.c 2012-01-11 12:35:00 +0000
+++ emacs-23.4/src/dosfns.c 2012-04-08 23:47:28 +0000
@@ -68,11 +68,11 @@ REGISTERS should be a vector produced by
Lisp_Object val;
CHECK_NUMBER (interrupt);
no = (unsigned long) XINT (interrupt);
CHECK_VECTOR (registers);
- if (no < 0 || no > 0xff || XVECTOR (registers)-> size != 8)
+ if (no < 0 || no > 0xff || XVECTOR_SIZE (registers) != 8)
return Qnil;
for (i = 0; i < 8; i++)
CHECK_NUMBER (XVECTOR (registers)->contents[i]);
inregs.x.ax = (unsigned long) XFASTINT (XVECTOR (registers)->contents[0]);
@@ -110,11 +110,11 @@ Return the updated VECTOR. */)
Lisp_Object val;
CHECK_NUMBER (address);
offs = (unsigned long) XINT (address);
CHECK_VECTOR (vector);
- len = XVECTOR (vector)-> size;
+ len = XVECTOR_SIZE (vector);
if (len < 1 || len > 2048 || offs < 0 || offs > 0xfffff - len)
return Qnil;
buf = alloca (len);
dosmemget (offs, len, buf);
@@ -135,11 +135,11 @@ DEFUN ("msdos-memput", Fdos_memput, Sdos
Lisp_Object val;
CHECK_NUMBER (address);
offs = (unsigned long) XINT (address);
CHECK_VECTOR (vector);
- len = XVECTOR (vector)-> size;
+ len = XVECTOR_SIZE (vector);
if (len < 1 || len > 2048 || offs < 0 || offs > 0xfffff - len)
return Qnil;
buf = alloca (len);
for (i = 0; i < len; i++)