[PD-cvs] pd/src s_loader.c,1.4.4.5.2.10.2.8,1.4.4.5.2.10.2.9

Mathieu Bouchard matju at users.sourceforge.net
Fri Jul 20 00:59:09 CEST 2007


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26559

Modified Files:
      Tag: desiredata
	s_loader.c 
Log Message:
removed some MAXPDSTRING


Index: s_loader.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_loader.c,v
retrieving revision 1.4.4.5.2.10.2.8
retrieving revision 1.4.4.5.2.10.2.9
diff -C2 -d -r1.4.4.5.2.10.2.8 -r1.4.4.5.2.10.2.9
*** s_loader.c	19 Jul 2007 21:08:45 -0000	1.4.4.5.2.10.2.8
--- s_loader.c	19 Jul 2007 22:59:07 -0000	1.4.4.5.2.10.2.9
***************
*** 104,108 ****
  
  static int sys_do_load_lib(t_canvas *canvas, char *objectname) {
!     char filename[MAXPDSTRING], *dirbuf, *classname, *nameptr;
      t_xxx makeout = NULL;
      int fd;
--- 104,108 ----
  
  static int sys_do_load_lib(t_canvas *canvas, char *objectname) {
!     char *filename=0, *dirbuf, *classname, *nameptr;
      t_xxx makeout = NULL;
      int fd;
***************
*** 119,127 ****
      if ((fd = canvas_open2(canvas, objectname, sys_dllextent2, &dirbuf, &nameptr, 1)) >= 0) goto gotone;
      /* next try (objectname)/(classname).(sys_dllextent) ... */
!     strncpy(filename, objectname, MAXPDSTRING);
!     filename[MAXPDSTRING-2] = 0;
!     strcat(filename, "/");
!     strncat(filename, classname, MAXPDSTRING-strlen(filename));
!     filename[MAXPDSTRING-1] = 0;
      if ((fd = canvas_open2(canvas, filename, sys_dllextent , &dirbuf, &nameptr, 1)) >= 0) goto gotone;
      if ((fd = canvas_open2(canvas, filename, sys_dllextent2, &dirbuf, &nameptr, 1)) >= 0) goto gotone;
--- 119,123 ----
      if ((fd = canvas_open2(canvas, objectname, sys_dllextent2, &dirbuf, &nameptr, 1)) >= 0) goto gotone;
      /* next try (objectname)/(classname).(sys_dllextent) ... */
!     asprintf(&filename,"%s/%s",objectname,classname);
      if ((fd = canvas_open2(canvas, filename, sys_dllextent , &dirbuf, &nameptr, 1)) >= 0) goto gotone;
      if ((fd = canvas_open2(canvas, filename, sys_dllextent2, &dirbuf, &nameptr, 1)) >= 0) goto gotone;
***************
*** 131,146 ****
      class_set_extern_dir(gensym(dirbuf));
      /* rebuild the absolute pathname */
!     strncpy(filename, dirbuf, MAXPDSTRING);
!     filename[MAXPDSTRING-2] = 0;
!     strcat(filename, "/");
!     strncat(filename, nameptr, MAXPDSTRING-strlen(filename));
!     filename[MAXPDSTRING-1] = 0;
  #ifdef DL_OPEN
      void *dlobj = dlopen(filename, RTLD_NOW | RTLD_GLOBAL);
      if (!dlobj) {
          post("%s: %s", filename, dlerror());
!         class_set_extern_dir(&s_);
! 	free(symname); free(dirbuf);
!         return 0;
      }
      makeout = (t_xxx)dlsym(dlobj, symname);
--- 127,137 ----
      class_set_extern_dir(gensym(dirbuf));
      /* rebuild the absolute pathname */
!     free(filename);
!     asprintf(&filename,"%s/%s",dirbuf,nameptr);
  #ifdef DL_OPEN
      void *dlobj = dlopen(filename, RTLD_NOW | RTLD_GLOBAL);
      if (!dlobj) {
          post("%s: %s", filename, dlerror());
!         goto forgetit;
      }
      makeout = (t_xxx)dlsym(dlobj, symname);
***************
*** 151,157 ****
      if (!ntdll) {
          post("%s: couldn't load", filename);
!         class_set_extern_dir(&s_);
! 	free(symname); free(dirbuf);
!         return 0;
      }
      makeout = (t_xxx)GetProcAddress(ntdll);
--- 142,146 ----
      if (!ntdll) {
          post("%s: couldn't load", filename);
!         goto forgetit;
      }
      makeout = (t_xxx)GetProcAddress(ntdll);
***************
*** 159,171 ****
      if (!makeout) {
          post("%s: can't find symbol '%s' in library", filename, symname);
!         class_set_extern_dir(&s_);
! 	free(symname); free(dirbuf);
!         return 0;
      }
      makeout();
      class_set_extern_dir(&s_);
      sys_putonloadlist(objectname);
!     free(symname);
      return 1;
  }
  
--- 148,162 ----
      if (!makeout) {
          post("%s: can't find symbol '%s' in library", filename, symname);
!         goto forgetit;
      }
      makeout();
      class_set_extern_dir(&s_);
      sys_putonloadlist(objectname);
!     free(filename); free(symname);
      return 1;
+ forgetit:
+     class_set_extern_dir(&s_);
+     free(filename); free(symname); free(dirbuf);
+     return 0;
  }
  





More information about the Pd-cvs mailing list