diff src/octave.cc @ 1266:e1ddfb12566d

[project @ 1995-04-20 18:56:04 by jwe]
author jwe
date Thu, 20 Apr 1995 19:09:12 +0000
parents b6360f2d4fa6
children 4acabfbdd381
line wrap: on
line diff
--- a/src/octave.cc	Wed Apr 12 02:20:53 1995 +0000
+++ b/src/octave.cc	Thu Apr 20 19:09:12 1995 +0000
@@ -989,6 +989,44 @@
 
 DEFALIAS (shell_cmd, system);
 
+#if defined (__GNUG__) && defined (DEBUG_NEW_DELETE)
+int debug_new_delete = 0;
+
+typedef void (*vfp)(void);
+extern vfp __new_handler;
+
+void *
+__builtin_new (size_t sz)
+{
+  void *p;
+
+  /* malloc (0) is unpredictable; avoid it.  */
+  if (sz == 0)
+    sz = 1;
+  p = (void *) malloc (sz);
+  while (p == 0)
+    {
+      (*__new_handler) ();
+      p = (void *) malloc (sz);
+    }
+
+  if (debug_new_delete)
+    cout << "__builtin_new: " << p << endl;
+
+  return p;
+}
+
+void
+__builtin_delete (void *ptr)
+{
+  if (debug_new_delete)
+    cout << "__builtin_delete: " << ptr << endl;
+
+  if (ptr)
+    free (ptr);
+}
+#endif
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***