[PD-cvs] pd/src m_obj.c,1.1.1.3.2.1,1.1.1.3.2.2 makefile,1.1.1.1.14.4,1.1.1.1.14.5 makefile.in,1.1.1.3.2.8,1.1.1.3.2.9

xovo at users.sourceforge.net xovo at users.sourceforge.net
Thu Oct 16 18:50:22 CEST 2003


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1:/tmp/cvs-serv17122

Modified Files:
      Tag: devel_0_37
	m_obj.c makefile makefile.in 
Log Message:
introduced a more portable method for checking of stack overflows


Index: m_obj.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_obj.c,v
retrieving revision 1.1.1.3.2.1
retrieving revision 1.1.1.3.2.2
diff -C2 -d -r1.1.1.3.2.1 -r1.1.1.3.2.2
*** m_obj.c	16 Oct 2003 16:09:48 -0000	1.1.1.3.2.1
--- m_obj.c	16 Oct 2003 16:50:20 -0000	1.1.1.3.2.2
***************
*** 10,13 ****
--- 10,17 ----
  #include "m_imp.h"
  
+ /* T.Grill - define for a modified, more portable method to detect stack overflows */
+ #define NEWSTACKMETH
+ 
+ 
  union inletunion
  {
***************
*** 257,262 ****
--- 261,272 ----
  /* --------------------------- outlets ------------------------------ */
  
+ #ifdef NEWSTACKMETH
+ static int stackcount = 0;
+ #define STACKITER 1000
+ #else
  static char *stacklimit, *topstack;
  #define STACKSIZE 1000000
+ #endif
+ 
  static int outlet_eventno;
  
***************
*** 264,272 ****
--- 274,285 ----
      for the outlet functions to check to prevent stack overflow from message
      recursion */
+         
  void outlet_setstacklim(void)
  {
+ #ifndef NEWSTACKMETH
      char c;
      topstack = &c;
      stacklimit = (&c) - STACKSIZE;
+ #endif
      outlet_eventno++;
  }
***************
*** 311,315 ****
--- 324,330 ----
  {
      pd_error(x->o_owner, "stack overflow");
+ #ifndef NEWSTACKMETH
      stacklimit = topstack;
+ #endif    
  }
  
***************
*** 317,328 ****
  {
      t_outconnect *oc;
! #ifndef NOSTACKCHK
      char c;    
      if (&c < stacklimit)
      	outlet_stackerror(x);
      else 
- #endif
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_bang(oc->oc_to);
  }
  
--- 332,348 ----
  {
      t_outconnect *oc;
! #ifdef NEWSTACKMETH
!     if(++stackcount >= STACKITER)
! #else
      char c;    
      if (&c < stacklimit)
+ #endif
      	outlet_stackerror(x);
      else 
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_bang(oc->oc_to);
+ #ifdef NEWSTACKMETH
+     --stackcount;
+ #endif    
  }
  
***************
*** 331,340 ****
      t_outconnect *oc;
      t_gpointer gpointer;
! #ifndef NOSTACKCHK 
!     char c;
      if (&c < stacklimit)
      	outlet_stackerror(x);
      else
- #endif    
      {
  #if 0
--- 351,362 ----
      t_outconnect *oc;
      t_gpointer gpointer;
! #ifdef NEWSTACKMETH
!     if(++stackcount >= STACKITER)
! #else
!     char c;    
      if (&c < stacklimit)
+ #endif
      	outlet_stackerror(x);
      else
      {
  #if 0
***************
*** 349,352 ****
--- 371,377 ----
  #endif
      }
+ #ifdef NEWSTACKMETH
+     --stackcount;
+ #endif    
  }
  
***************
*** 354,365 ****
  {
      t_outconnect *oc;
! #ifndef NOSTACKCHK 
!     char c;
      if (&c < stacklimit)
      	outlet_stackerror(x);
!     else 
! #endif    
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_float(oc->oc_to, f);
  }
  
--- 379,395 ----
  {
      t_outconnect *oc;
! #ifdef NEWSTACKMETH
!     if(++stackcount >= STACKITER)
! #else
!     char c;    
      if (&c < stacklimit)
+ #endif
      	outlet_stackerror(x);
!     else
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_float(oc->oc_to, f);
+ #ifdef NEWSTACKMETH
+     --stackcount;
+ #endif    
  }
  
***************
*** 367,378 ****
  {
      t_outconnect *oc;
! #ifndef NOSTACKCHK 
!     char c;
      if (&c < stacklimit)
      	outlet_stackerror(x);
!     else 
! #endif    
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_symbol(oc->oc_to, s);
  }
  
--- 397,413 ----
  {
      t_outconnect *oc;
! #ifdef NEWSTACKMETH
!     if(++stackcount >= STACKITER)
! #else
!     char c;    
      if (&c < stacklimit)
+ #endif
      	outlet_stackerror(x);
!     else
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_symbol(oc->oc_to, s);
+ #ifdef NEWSTACKMETH
+     --stackcount;
+ #endif    
  }
  
***************
*** 380,391 ****
  {
      t_outconnect *oc;
! #ifndef NOSTACKCHK 
!     char c;
      if (&c < stacklimit)
      	outlet_stackerror(x);
!     else 
! #endif    
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_list(oc->oc_to, s, argc, argv);
  }
  
--- 415,431 ----
  {
      t_outconnect *oc;
! #ifdef NEWSTACKMETH
!     if(++stackcount >= STACKITER)
! #else
!     char c;    
      if (&c < stacklimit)
+ #endif
      	outlet_stackerror(x);
!     else
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	pd_list(oc->oc_to, s, argc, argv);
+ #ifdef NEWSTACKMETH
+     --stackcount;
+ #endif    
  }
  
***************
*** 393,404 ****
  {
      t_outconnect *oc;
! #ifndef NOSTACKCHK 
!     char c;
      if (&c < stacklimit)
-     	outlet_stackerror(x);
-     else 
  #endif
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	typedmess(oc->oc_to, s, argc, argv);
  }
  
--- 433,449 ----
  {
      t_outconnect *oc;
! #ifdef NEWSTACKMETH
!     if(++stackcount >= STACKITER)
! #else
!     char c;    
      if (&c < stacklimit)
  #endif
+     	outlet_stackerror(x);
+     else
      for (oc = x->o_connections; oc; oc = oc->oc_next)
      	typedmess(oc->oc_to, s, argc, argv);
+ #ifdef NEWSTACKMETH
+     --stackcount;
+ #endif    
  }
  

Index: makefile
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile,v
retrieving revision 1.1.1.1.14.4
retrieving revision 1.1.1.1.14.5
diff -C2 -d -r1.1.1.1.14.4 -r1.1.1.1.14.5
*** makefile	15 Oct 2003 07:55:10 -0000	1.1.1.1.14.4
--- makefile	16 Oct 2003 16:50:20 -0000	1.1.1.1.14.5
***************
*** 11,15 ****
  MANDIR = ${prefix}/man
  
! MORECFLAGS = -DDL_OPEN -DPA_USE_OSS -DPA_LITTLE_ENDIAN     	 -DUSEAPI_OSS         -I../portaudio/pa_common         -I../portaudio/pablio -I../portaudio/portmidi-macosx -DPA_USE_ALSA -DUSEAPI_ALSA -DUSEAPI_JACK
  
  INCLUDE = -I.
--- 11,15 ----
  MANDIR = ${prefix}/man
  
! MORECFLAGS = -DDL_OPEN -DPA_USE_OSS -DPA_LITTLE_ENDIAN     	 -DUSEAPI_OSS         -I../portaudio/pa_common         -I../portaudio/pablio -I../portaudio/portmidi-macosx -Werror -DPA_USE_ALSA -DUSEAPI_ALSA -DUSEAPI_JACK
  
  INCLUDE = -I.
***************
*** 20,29 ****
  LIB =   -ldl -lm -lpthread -lasound
  
! OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer
! WARN_CFLAGS = -Wall -W -Wstrict-prototypes \
      -Wno-unused -Wno-parentheses -Wno-switch
  ARCH_CFLAGS = -DPD -DUNIX 
  
! CFLAGS = $(ARCH_CFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(MORECFLAGS)
  
  # the sources
--- 20,29 ----
  LIB =   -ldl -lm -lpthread -lasound
  
! OPT_CFLAGS = -g
! WARN_CFLAGS = -Wall -W -Wstrict-prototypes -Werror \
      -Wno-unused -Wno-parentheses -Wno-switch
  ARCH_CFLAGS = -DPD -DUNIX 
  
! CFLAGS += $(ARCH_CFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(MORECFLAGS)
  
  # the sources
***************
*** 79,89 ****
  
  $(BIN_DIR)/pd-watchdog: s_watchdog.c
! 	cc -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c
  
  $(BIN_DIR)/pdsend: u_pdsend.c
! 	cc $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c
  
  $(BIN_DIR)/pdreceive: u_pdreceive.c
! 	cc $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c
  
  $(PDEXEC): $(OBJ) 
--- 79,89 ----
  
  $(BIN_DIR)/pd-watchdog: s_watchdog.c
! 	$(CC) -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c
  
  $(BIN_DIR)/pdsend: u_pdsend.c
! 	$(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c
  
  $(BIN_DIR)/pdreceive: u_pdreceive.c
! 	$(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c
  
  $(PDEXEC): $(OBJ) 

Index: makefile.in
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.in,v
retrieving revision 1.1.1.3.2.8
retrieving revision 1.1.1.3.2.9
diff -C2 -d -r1.1.1.3.2.8 -r1.1.1.3.2.9
*** makefile.in	12 Oct 2003 15:15:41 -0000	1.1.1.3.2.8
--- makefile.in	16 Oct 2003 16:50:20 -0000	1.1.1.3.2.9
***************
*** 25,29 ****
  ARCH_CFLAGS = -DPD -DUNIX 
  
! CFLAGS = $(ARCH_CFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(MORECFLAGS)
  
  # the sources
--- 25,29 ----
  ARCH_CFLAGS = -DPD -DUNIX 
  
! CFLAGS += $(ARCH_CFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(MORECFLAGS)
  
  # the sources
***************
*** 79,89 ****
  
  $(BIN_DIR)/pd-watchdog: s_watchdog.c
! 	cc -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c
  
  $(BIN_DIR)/pdsend: u_pdsend.c
! 	cc $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c
  
  $(BIN_DIR)/pdreceive: u_pdreceive.c
! 	cc $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c
  
  $(PDEXEC): $(OBJ) 
--- 79,89 ----
  
  $(BIN_DIR)/pd-watchdog: s_watchdog.c
! 	$(CC) -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c
  
  $(BIN_DIR)/pdsend: u_pdsend.c
! 	$(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c
  
  $(BIN_DIR)/pdreceive: u_pdreceive.c
! 	$(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c
  
  $(PDEXEC): $(OBJ) 






More information about the Pd-cvs mailing list