Update of /cvsroot/pure-data/externals/clr
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1204
Modified Files:
clr.c
Log Message:
errors loading the assembly will no more crash pd
Index: clr.c
===================================================================
RCS file: /cvsroot/pure-data/externals/clr/clr.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** clr.c 14 Jan 2006 02:34:17 -0000 1.6
--- clr.c 16 Jan 2006 11:30:26 -0000 1.7
***************
*** 142,153 ****
//mono_jit_init (random_name_str);
x->domain = mono_domain_get();
-
x->assembly = mono_domain_assembly_open (x->domain, x->filename->s_name);
-
x->assemblyPureData = mono_domain_assembly_open (x->domain, "PureData.dll");
if (!x->assembly)
{
! error("clr: assembly not found!");
}
--- 142,158 ----
//mono_jit_init (random_name_str);
x->domain = mono_domain_get();
x->assembly = mono_domain_assembly_open (x->domain, x->filename->s_name);
x->assemblyPureData = mono_domain_assembly_open (x->domain, "PureData.dll");
if (!x->assembly)
{
! error("clr: file %s not found!", x->filename->s_name);
! return;
! }
!
! if (!x->assemblyPureData)
! {
! error("clr: assembly PureData.dll not found! it is necessary!");
! return;
}
***************
*** 159,164 ****
x->klass = mono_class_from_name (x->image, "PureData", x->assemblyname->s_name);
if (!x->klass) {
! error("Can't find MyType in assembly %s\n", mono_image_get_filename (x->image));
! //exit (1);
}
x->obj = mono_object_new (x->domain, x->klass);
--- 164,169 ----
x->klass = mono_class_from_name (x->image, "PureData", x->assemblyname->s_name);
if (!x->klass) {
! error("Can't find %s in assembly %s\n", x->assemblyname->s_name, mono_image_get_filename (x->image));
! return;
}
x->obj = mono_object_new (x->domain, x->klass);
***************
*** 198,203 ****
{
error("clr: the provided assembly is not valid! the SetUp function is missing");
}
!
}
--- 203,210 ----
{
error("clr: the provided assembly is not valid! the SetUp function is missing");
+ return;
}
! // all done without errors
! x->loaded = 1;
}
***************
*** 251,254 ****
--- 258,266 ----
static void clr_bang(t_clr *x)
{
+ if (x->loaded == 0)
+ {
+ error("assembly not specified");
+ return;
+ }
if (x->manageBang)
{
***************
*** 263,266 ****
--- 275,283 ----
strmono = mono_string_new (x->domain, sl->s_name);
args[0] = &strmono;
+ if (x->loaded == 0)
+ {
+ error("assembly not specified");
+ return;
+ }
if (x->manageSymbol)
{
***************
*** 273,276 ****
--- 290,298 ----
gpointer args [1];
args [0] = &f;
+ if (x->loaded == 0)
+ {
+ error("assembly not specified");
+ return;
+ }
if (x->manageFloat)
{
***************
*** 289,293 ****
// first i extract the first atom which should be a symbol
post("clr_manage_list, got symbol = %s", sl->s_name);
!
for (i=0; i<MAX_SELECTORS; i++)
{
--- 311,319 ----
// first i extract the first atom which should be a symbol
post("clr_manage_list, got symbol = %s", sl->s_name);
! if (x->loaded == 0)
! {
! error("assembly not specified");
! return;
! }
for (i=0; i<MAX_SELECTORS; i++)
{
***************
*** 406,410 ****
if (selectorString->length == 0)
{
- printf("selectorString->length == 0");
switch (type)
{
--- 432,435 ----
***************
*** 460,464 ****
selCstring = mono_string_to_utf8 (selectorString);
x = (t_clr *)x1;
!
switch (type)
{
--- 485,493 ----
selCstring = mono_string_to_utf8 (selectorString);
x = (t_clr *)x1;
! if (x->loaded == 0)
! {
! error("assembly not specified");
! return;
! }
switch (type)
{
***************
*** 490,494 ****
char typeString[256];
x = (t_clr *)x1;
!
// public enum ParametersType {None = 0, Float=1, Symbol=2, List=3, Bang=4, Generic=5};
switch (type)
--- 519,527 ----
char typeString[256];
x = (t_clr *)x1;
! if (x->loaded == 0)
! {
! error("assembly not specified");
! return;
! }
// public enum ParametersType {None = 0, Float=1, Symbol=2, List=3, Bang=4, Generic=5};
switch (type)
***************
*** 533,536 ****
--- 566,574 ----
atom_simple *atoms;
int n;
+ if (x->loaded == 0)
+ {
+ error("assembly not specified");
+ return;
+ }
if ((outlet>MAX_OUTLETS) || (outlet<0))
{
***************
*** 603,608 ****
time_t a;
t_clr *x = (t_clr *)pd_new(clr_class);
- // x->l_out = outlet_new(&x->x_obj, &s_list);
- // x->l_out = outlet_new(&x->x_obj, gensym("float"));
char strtmp[256];
--- 641,644 ----
***************
*** 615,619 ****
{
x->loaded = 0;
! error("clr: you must provide an assembly as the first argument");
return (x);
}
--- 651,655 ----
{
x->loaded = 0;
! error("clr: you must provide a class name as the first argument");
return (x);
}
***************
*** 621,634 ****
x->assemblyname = atom_gensym(argv);
! if (argc==1)
{
// only main class passed
// filename by default
sprintf(strtmp, "%s.dll", x->assemblyname->s_name);
! x->filename = atom_gensym(strtmp);
}
- x->filename = atom_gensym(argv+1);
-
// load mono, init the needed vars
mono_load(x);
--- 657,672 ----
x->assemblyname = atom_gensym(argv);
! if (argc<2)
{
// only main class passed
// filename by default
sprintf(strtmp, "%s.dll", x->assemblyname->s_name);
! x->filename = gensym(strtmp);
! printf(" used did not specified filename, I guess it is %s\n", strtmp);
! } else
! {
! x->filename = atom_gensym(argv+1);
}
// load mono, init the needed vars
mono_load(x);