* s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME): Define
authorDan Nicolaescu <dann@ics.uci.edu>
Fri, 23 Sep 2005 17:06:03 +0000 (17:06 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Fri, 23 Sep 2005 17:06:03 +0000 (17:06 +0000)
BROKEN_GET_CURRENT_DIR_NAME.

* sysdep.c (get_current_dir_name): Also define if
BROKEN_GET_CURRENT_DIR_NAME.

* m/ibmrs6000.h: Test for USG5, not USG5_4.

src/ChangeLog
src/m/ibmrs6000.h
src/s/aix4-2.h
src/sysdep.c

index 62e8254..2260e00 100644 (file)
@@ -1,3 +1,13 @@
+2005-09-23  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * s/aix4-2.h (BROKEN_GET_CURRENT_DIR_NAME): Define
+       BROKEN_GET_CURRENT_DIR_NAME.
+
+       * sysdep.c (get_current_dir_name): Also define if
+       BROKEN_GET_CURRENT_DIR_NAME. 
+
+       * m/ibmrs6000.h: Test for USG5, not USG5_4.
+
 2005-09-22  Kim F. Storm  <storm@cua.dk>
 
        * xdisp.c (message_dolog): Add warning about GC and Lisp strings.
index 9559f1a..0ff702d 100644 (file)
@@ -112,7 +112,7 @@ Boston, MA 02110-1301, USA.  */
 #define OBJECTS_MACHINE hftctl.o
 #endif
 
-#ifndef USG5_4
+#ifndef USG5
 #define C_SWITCH_MACHINE -D_BSD
 #endif
 
index 66b7d32..02225a9 100644 (file)
@@ -2,5 +2,23 @@
 
 #undef ALIGN_DATA_RELOC
 
+/* On AIX Emacs uses the gmalloc.c malloc implementation.  But given
+   the way this system works, libc functions that return malloced
+   memory use the libc malloc implementation. Calling xfree or
+   xrealloc on the results of such functions results in a crash. 
+
+   One solution for this could be to define SYSTEM_MALLOC here, but
+   that does not currently work on this system.
+
+   It is possible to completely override the malloc implementation on
+   AIX, but that involves putting the malloc functions in a shared
+   library and setting the MALLOCTYPE environment variable to point to
+   tha shared library.
+   
+   Emacs currently calls xrealloc on the results of get_current_dir name,
+   to avoid a crash just use the Emacs implementation for that function.
+*/
+#define BROKEN_GET_CURRENT_DIR_NAME 1
+
 /* arch-tag: 38fe75ea-6aef-42bd-8449-bc34d921a562
    (do not change this comment) */
index eae493b..f70d4b1 100644 (file)
@@ -256,7 +256,7 @@ void hft_reset ();
 SIGMASKTYPE sigprocmask_set;
 
 
-#ifndef HAVE_GET_CURRENT_DIR_NAME
+#if !defined (HAVE_GET_CURRENT_DIR_NAME) || defined (BROKEN_GET_CURRENT_DIR_NAME)
 
 /* Return the current working directory.  Returns NULL on errors.
    Any other returned value must be freed with free. This is used