In libobjc/: 2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>

In libobjc/:
2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/48177
	* selector.c (__sel_register_typed_name): Use sel_types_match()
	instead of strcmp() to compare selector types (Suggestion by
	Richard Frith-Macdonald <rfm@gnu.org>).

In gcc/testsuite/:
2011-05-24  Nicola Pero  <nicola.pero@meta-innovation.com>

	PR libobjc/48177
	* objc.dg/pr48177.m: New testcase.

From-SVN: r174143
This commit is contained in:
Nicola Pero 2011-05-24 21:39:24 +00:00 committed by Nicola Pero
parent 4e26ba9022
commit 85fe6408f4
4 changed files with 48 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/48177
* objc.dg/pr48177.m: New testcase.
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
PR objc/48187

View File

@ -0,0 +1,35 @@
/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, May 2011. */
/* { dg-do run } */
/* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } */
#include <objc/runtime.h>
#include <stdlib.h>
int main(int argc, void **args)
{
#ifdef __GNU_LIBOBJC__
/* This special test tests that, if you have a selector already
registered in the runtime with full type information, you can use
sel_registerTypedName() to get it even if you specify the type
with incorrect argframe information. This is helpful as
selectors generated by the compiler (which have correct argframe
information) are usually registered before hand-written ones
(which often have incorrect argframe information, but need the
correct one).
Note that in this hand-written test, even the type information of
the first selector may be wrong (on this machine); but that's OK
as we'll never actually use the selectors. */
SEL selector1 = sel_registerTypedName ("testMethod", "i8@0:4");
SEL selector2 = sel_registerTypedName ("testMethod", "i8@8:8");
/* We compare the selectors using ==, not using sel_isEqual(). This
is because we are testing internals of the runtime and we know
that in the current implementation they should be identical if
the stuff is to work as expected. Don't do this at home. */
if (selector1 != selector2)
abort ();
#endif
return 0;
}

View File

@ -1,3 +1,10 @@
2011-05-24 Nicola Pero <nicola.pero@meta-innovation.com>
PR libobjc/48177
* selector.c (__sel_register_typed_name): Use sel_types_match()
instead of strcmp() to compare selector types (Suggestion by
Richard Frith-Macdonald <rfm@gnu.org>).
2011-04-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
PR libobjc/32037

View File

@ -597,7 +597,7 @@ __sel_register_typed_name (const char *name, const char *types,
return s;
}
}
else if (! strcmp (s->sel_types, types))
else if (sel_types_match (s->sel_types, types))
{
if (orig)
{