diff -ru ddd-3.3.12-orig/configure ddd-3.3.12/configure
--- ddd-3.3.12-orig/configure	2009-02-11 11:25:52.000000000 -0600
+++ ddd-3.3.12/configure	2018-08-12 06:13:12.000000000 -0500
@@ -4275,7 +4275,7 @@
 rm -f conftest$ac_cv_exeext
 { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
 echo "${ECHO_T}$ac_cv_exeext" >&6; }
-
+ac_cv_exeext=".exe"
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
Only in ddd-3.3.12/ddd: .LabelH.C.un~
diff -ru ddd-3.3.12-orig/ddd/LabelH.C ddd-3.3.12/ddd/LabelH.C
--- ddd-3.3.12-orig/ddd/LabelH.C	2009-02-11 11:25:07.000000000 -0600
+++ ddd-3.3.12/ddd/LabelH.C	2018-08-12 06:14:01.000000000 -0500
@@ -30,6 +30,8 @@
  *  cwikla@wolfram.com
 */
 
+#include <stddef.h>
+
 #define new a_new		// Motif 1.1 wants this
 #define class a_class
 extern "C" {
diff -ru ddd-3.3.12-orig/ddd/Makefile.in ddd-3.3.12/ddd/Makefile.in
--- ddd-3.3.12-orig/ddd/Makefile.in	2009-02-11 11:25:55.000000000 -0600
+++ ddd-3.3.12/ddd/Makefile.in	2018-08-12 06:13:12.000000000 -0500
@@ -2693,7 +2693,7 @@
 
 $(srcdir)/ddd.info.txt.gz.C: $(srcdir)/ddd.info.txt.gz
 	$(MAKE) stringify$(EXEEXT)
-	-./stringify < $? > $@~ && $(MV) $@~ $@
+	-./stringify$(EXEEXT) < $? > $@~ && $(MV) $@~ $@
 
 # License.
 $(srcdir)/COPYING.gz: $(srcdir)/../COPYING
@@ -2701,7 +2701,7 @@
 
 $(srcdir)/COPYING.gz.C: $(srcdir)/COPYING.gz
 	$(MAKE) stringify$(EXEEXT)
-	-./stringify < $? > $@~ && $(MV) $@~ $@
+	-./stringify$(EXEEXT) < $? > $@~ && $(MV) $@~ $@
 
 # News.
 $(srcdir)/NEWS.gz: $(srcdir)/../NEWS
@@ -2709,7 +2709,7 @@
 
 $(srcdir)/NEWS.gz.C: $(srcdir)/NEWS.gz
 	$(MAKE) stringify$(EXEEXT)
-	-./stringify < $? > $@~ && $(MV) $@~ $@
+	-./stringify$(EXEEXT) < $? > $@~ && $(MV) $@~ $@
 
 show.$(OBJEXT): COPYING.gz.C NEWS.gz.C ddd.info.txt.gz.C
 
diff -ru ddd-3.3.12-orig/ddd/VSLDefList.C ddd-3.3.12/ddd/VSLDefList.C
--- ddd-3.3.12-orig/ddd/VSLDefList.C	2009-02-11 11:25:07.000000000 -0600
+++ ddd-3.3.12/ddd/VSLDefList.C	2018-08-12 06:13:12.000000000 -0500
@@ -60,7 +60,7 @@
     {
 	std::ostringstream s;
 	s << *arg;
-	VSLLib::eval_error("no suiting definition for " + f_name() + s);
+	VSLLib::eval_error("no suiting definition for " + f_name() + s.str().c_str());
     }
 
     return d ? d->eval(arg) : 0;
diff -ru ddd-3.3.12-orig/ddd/strclass.h ddd-3.3.12/ddd/strclass.h
--- ddd-3.3.12-orig/ddd/strclass.h	2009-02-11 11:25:06.000000000 -0600
+++ ddd-3.3.12/ddd/strclass.h	2018-08-12 06:13:12.000000000 -0500
@@ -543,6 +543,9 @@
     bool OK() const; 
 };
 
+int readline(std::istream& s, string& x, char terminator = '\n', int discard_terminator = 1);
+string common_prefix(const string& x, const string& y, int startpos = 0);
+string common_suffix(const string& x, const string& y, int startpos = -1);
 
 class string
 {
@@ -811,9 +814,9 @@
 		     const regex& sep);
 
     friend string common_prefix(const string& x, const string& y, 
-				int startpos = 0);
+				int startpos);
     friend string common_suffix(const string& x, const string& y, 
-				int startpos = -1);
+				int startpos);
     friend string replicate(char c, int n);
     friend string replicate(const string& y, int n);
     friend string join(const string *src, int n, const string& sep);
@@ -864,8 +867,8 @@
     friend std::istream& operator>>(std::istream& s, string& x);
 
     friend int readline(std::istream& s, string& x, 
-			char terminator = '\n',
-			int discard_terminator = 1);
+			char terminator,
+			int discard_terminator);
 
     // Status
     unsigned int length() const;