blob: 0ccfa4174e273b497ff106d2749d806f654db7ae [file] [log] [blame]
/* { dg-do run { target *-*-darwin* } } */
/* { dg-options "-fobjc-gc -framework Foundation" } */
#import <Foundation/Foundation.h>
#import <Foundation/NSString.h>
uintptr_t OldPointerVal;
uintptr_t NewPointerVal;
@class Bork;
typedef struct {
NSString *name;
} Info;
@interface Bork : NSObject {
@private
CFMutableDictionaryRef _f1;
__strong Info* _f2;
}
- (void) foo:(NSString*)name;
@end
@implementation Bork
- (id)init {
_f2 = malloc(sizeof(Info) * 3);
unsigned i;
for (i = 0; i < 3; ++i)
_f2[i].name = 0;
}
- (void)foo:(NSString*)name {
OldPointerVal = (uintptr_t)_f2;
_f2[0].name = [name copy];
NewPointerVal = (uintptr_t)_f2;
}
@end
int main() {
Bork *NM = [Bork alloc];
[NM init];
NSString *Str = [NSString stringWithUTF8String: "Hello world"];
[NM foo: Str];
if (OldPointerVal != NewPointerVal)
abort();
[NM release];
}