Subject: bug#14944: 24.3.50; Cygw32 build break

From: Ken Brown <[email-masked]>
Date: Wed, 24 Jul 2013 07:42:14 -0400

On 7/24/2013 6:59 AM, Kazuhiro Ito wrote:
> Because make_save_ptr is not defined in Cygw32, Cygw32 can't be built
> on trunk.
>
> (snip)
> w32fns.o: In function `w32_monitor_enum':
> /build/emacs/trunk/src/w32fns.c:4933: undefined reference to `make_save_ptr'
> collect2: error: ld returned 1 exit status
> (snip)
>
>
> make_save_ptr is defined as below in src/alloc.c
>
> #if defined HAVE_NS || defined DOS_NT
> Lisp_Object
> make_save_ptr (void *a)
> {
>    Lisp_Object val = allocate_misc (Lisp_Misc_Save_Value);
>    struct Lisp_Save_Value *p = XSAVE_VALUE (val);
>    p->save_type = SAVE_POINTER;
>    p->data[0].pointer = a;
>    return val;
> }
> #endif

This happened because of a change in rev 113453, in which make_save_ptr 
(formerly called make_save_pointer) was defined only on platforms that 
need it.  The cygw32 platform was missed.  The following should fix it.

=== modified file 'src/alloc.c'
--- src/alloc.c 2013-07-21 15:56:55 +0000
+++ src/alloc.c 2013-07-24 11:35:40 +0000
@@ -3371,7 +3371,7 @@
    return val;
  }

-#if defined HAVE_NS || defined DOS_NT
+#if defined HAVE_NS || defined DOS_NT || defined HAVE_NTGUI
  Lisp_Object
  make_save_ptr (void *a)
  {

Ken