On 08/23/13 21:00, Miller Puckette wrote:
> Hi all,
> 
> Pd version 0.45-0 is available on http://crca.ucsd.edu/~msp/software.htm

cool.
i started updating the Debian packages...

> As always I'm sure there will be problems here and there - you're welcome
> to report them on the Pd mailing list (pd-list@iem.at) which is always the
> fastest way to get me to see them.

two smallish notes.

#1 CFLAGS
when manually including the Debian-patch "usercflags" (that makes sure
that user-specified CFLAGS are honoured by prepending the
configure-detected flags rather than appending), a small oversight has
occured:
- on *linux*, the configure-CFLAGS are still appended. instead the
change was made for *hurd* (aka "GNU"). i think this was simply a
confusion of "GNU" and "linux".
- otoh. the *hurd* CFLAGS still include "-O6"

the attached "usercflags.patch" hopefully gets this right. it /also/
fixes the CFLAGS append/prepend order for cygwin & mingw (though i admit
that i have not tested this)

#2 BUILD FAILURES with "-Werror=format-security"
when trying to build with the above error-flag (which pays some extra
attention to argument passing), the build fails due to two problems.
a) a call of "error(buf)" withing bug() is rejected, as the
'error'-function really reads "error(const char *fmt, ...)" and 'buf' is
not a format, resp. there are no varargs. the fix is simply to call
  error("consistency check failed: %s", buf)
and not construct the "consitency-failed" string beforehand. cool, this
makes the code a little more readable!
b) more serious, the new [text] object uses 'pd_error("ouch %s", str)',
when pd_error() really needs a pointer to a pd-object...
this is a potential crasher bug, as it accesses string memory as objects.

the attached patch "fix_format-security.patch" fixes this as well.


gfmasdr
IOhannes
Author: Paul Brossier <p...@debian.org>
Description: do not overwrite user cflags, add them *after* hardcoded ones
--- puredata.orig/configure.ac
+++ puredata/configure.ac
@@ -42,7 +42,7 @@
 	if test "x${ANDROID}" = "xno"; then
 	 LINUX=yes
 	 portaudio=yes
-	 CFLAGS="$CFLAGS -O3 -funroll-loops -fomit-frame-pointer"
+	 CFLAGS="-O3 -funroll-loops -fomit-frame-pointer $CFLAGS"
 	fi
 	EXTERNAL_CFLAGS="-fPIC"
 	EXTERNAL_LDFLAGS="-Wl,--export-dynamic -shared -fPIC"
@@ -50,7 +50,7 @@
 	;;
 *-*-gnu*)
 	HURD=yes
-	CFLAGS="-O6 -funroll-loops -fomit-frame-pointer $CFLAGS"
+	CFLAGS="-O3 -funroll-loops -fomit-frame-pointer $CFLAGS"
 	EXTERNAL_CFLAGS="-fPIC"
 	EXTERNAL_LDFLAGS="-Wl,--export-dynamic -shared -fPIC"
 	EXTERNAL_EXTENSION=pd_linux
@@ -62,7 +62,8 @@
 #        to make the final linking phase use g++
 #		asio=yes
 	portaudio=yes
-	CFLAGS="$CFLAGS -O3 -funroll-loops -fomit-frame-pointer -DWINVER=0x0501 -D_WIN32_WINNT=0x0501"
+	CFLAGS="-O3 -funroll-loops -fomit-frame-pointer -DWINVER=0x0501
+-D_WIN32_WINNT=0x0501 $CFLAGS"
 # ASIO is a C++ library, so if its included, then use g++ to build
 	CC=g++
 	EXTERNAL_CFLAGS="-mms-bitfields"
@@ -73,7 +74,7 @@
 	WINDOWS=yes
 	CYGWIN=yes
 	portaudio=yes
-	CFLAGS="$CFLAGS -O3 -funroll-loops -fomit-frame-pointer"
+	CFLAGS="-O3 -funroll-loops -fomit-frame-pointer $CFLAGS"
 	EXTERNAL_CFLAGS=
 	EXTERNAL_LDFLAGS="-Wl,--export-dynamic -shared -lpd"
 	EXTERNAL_EXTENSION=dll
Author: IOhannes m zmölnig
Description: printf-like varargs functions must have a proper format;
  use "error('%s', str);" rather than "error(str);"
  also pd_error() requires an instance-pointer as the first argument
--- puredata.orig/src/s_print.c
+++ puredata/src/s_print.c
@@ -282,12 +282,11 @@
     va_list ap;
     t_int arg[8];
     int i;
-    strcpy(buf, "consistency check failed: ");
     va_start(ap, fmt);
-    vsnprintf(buf+strlen(buf), MAXPDSTRING-1, fmt, ap);
+    vsnprintf(buf, MAXPDSTRING-1, fmt, ap);
     va_end(ap);
 
-    error(buf);
+    error("consistency check failed: %s", buf);
 }
 
     /* this isn't worked out yet. */
--- puredata.orig/src/x_text.c
+++ puredata/src/x_text.c
@@ -1174,7 +1174,7 @@
         }
         else
         {
-            pd_error("text sequence: unknown flag '%s'...",
+            pd_error(x, "text sequence: unknown flag '%s'...",
                 argv->a_w.w_symbol->s_name);
         }
         argc--; argv++;

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> 
http://lists.puredata.info/listinfo/pd-list

Reply via email to