[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: some unsigned/NSInteger to NSUInteger changes in -gui
From: |
Sebastian Reitenbach |
Subject: |
Re: some unsigned/NSInteger to NSUInteger changes in -gui |
Date: |
Tue, 10 Apr 2012 17:13:37 +0200 |
User-agent: |
SOGoMail 1.3.14 |
On Monday, April 9, 2012 22:37 CEST, Fred Kiefer <address@hidden> wrote:
> I just checked the code in base and Eric seems to be right here. The
> type check code in NSUnarchiver (we aren't talking about keyed coding
> here) has a lot of HACK warnings, but it seems to do what we need here,
> allow for different integer types to be used interchangeable.
>
> Please go ahead and apply this change.
Argh, now I recognized, I seem to broke at least Fisicalab and Addresses on
startup:
2012-04-10 17:05:54.485 FisicaLab[10884] Exception occured while loading model:
expected unsigned int and got int
2012-04-10 17:05:54.508 FisicaLab[10884] Failed to load Gorm
2012-04-10 17:05:54.528 FisicaLab[10884] Cannot load the main model file
'Fisica.gorm'
putting a breakpoint at NSException, I end up here:
Breakpoint 2, -[NSException raise] (self=0x205b8f608, _cmd=0x20d881a50) at
NSException.m:956
956 if (_reserved == 0)
Current language: auto; currently minimal
(gdb) bt
#0 -[NSException raise] (self=0x205b8f608, _cmd=0x20d881a50) at
NSException.m:956
#1 0x000000020d409b65 in +[NSException raise:format:] (self=0x20d8816a0,
_cmd=Variable "_cmd" is not available.
) at NSException.m:835
#2 0x000000020d4c88c2 in -[NSUnarchiver decodeValueOfObjCType:at:]
(self=0x206e20088, _cmd=0x20cf0dea0, type=0x20cd10b20 "I", address=0x20dc2fd70)
at NSUnarchiver.m:247
#3 0x000000020cb2972b in -[NSTabView initWithCoder:] (self=Variable "self" is
not available.
) at NSTabView.m:634
#4 0x000000020d4c8200 in -[NSUnarchiver decodeValueOfObjCType:at:]
(self=0x206e20088, _cmd=0x20d8dda40, type=0x20d728790 "@", address=0x20dc2df70)
at NSUnarchiver.m:662
#5 0x000000020d4c627d in -[NSUnarchiver decodeArrayOfObjCType:count:at:]
(self=0x206e20088, _cmd=Variable "_cmd" is not available.
) at NSUnarchiver.m:574
#6 0x000000020d3459de in -[GSMutableArray initWithCoder:] (self=0x20721e648,
_cmd=Variable "_cmd" is not available.
) at GSArray.m:553
#7 0x000000020d4c8200 in -[NSUnarchiver decodeValueOfObjCType:at:]
(self=0x206e20088, _cmd=0x20cf42dd0, type=0x20cd157ca "@",
address=0x7f7fffff8798) at NSUnarchiver.m:662
#8 0x000000020cb79dc3 in -[NSView initWithCoder:] (self=Variable "self" is not
available.
) at NSView.m:4740
#9 0x000000020d4c8200 in -[NSUnarchiver decodeValueOfObjCType:at:]
(self=0x206e20088, _cmd=0x20d8dda40, type=0x20d728790 "@", address=0x20dc2dc00)
at NSUnarchiver.m:662
#10 0x000000020d4c627d in -[NSUnarchiver decodeArrayOfObjCType:count:at:]
(self=0x206e20088, _cmd=Variable "_cmd" is not available.
) at NSUnarchiver.m:574
...
(gdb) frame 3
#3 0x000000020cb2972b in -[NSTabView initWithCoder:] (self=Variable "self" is
not available.
) at NSTabView.m:634
634 [aDecoder decodeValueOfObjCType: "I" at: &_selected_item];
(gdb) list
629 }
630 }
631 [aDecoder decodeValueOfObjCType: @encode(BOOL) at:
&_draws_background];
632 [aDecoder decodeValueOfObjCType: @encode(BOOL) at:
&_truncated_label];
633 _delegate = [aDecoder decodeObject];
634 [aDecoder decodeValueOfObjCType: "I" at: &_selected_item];
635 _selected = [_items objectAtIndex: _selected_item];
636 }
637 return self;
638 }
but in AppKit/NSTabView.h:
I have: NSUInteger _selected_item;
so I don't really understand, why the decoder thinks its getting an int?
Someone can help me understand how I broke that?
Sebastian
>
> Fred
>
> On 09.04.2012 21:14, Eric Wasylishen wrote:
> > Hi,
> > What's safe is encoding with any supported integer type and decoding with
> > another integer type, so you can write a keyed archive with @encode(long)
> > and decode it as @encode(int), even if long is 64-bits and int is 32-bits.
> >
> > In other words it's safe to use @encode(NS[U]Integer). However, if the ivar
> > is changed to NSUInteger, I think these:
> >
> >>> - [aCoder encodeValueOfObjCType: "i" at:&_selected_item];
> >>> + [aCoder encodeValueOfObjCType: "I" at:&_selected_item];
> >
> >>> - [aDecoder decodeValueOfObjCType: "i" at:&_selected_item];
> >>> + [aDecoder decodeValueOfObjCType: "I" at:&_selected_item];
> >
> > should actually use @encode(NSUInteger), not "l". Otherwise the patch looks
> > good :-).
> >
> > Eric
> >
> > On 2012-04-09, at 11:08 AM, Fred Kiefer wrote:
> >
> >> Most of the patch is ok, but we have too ake a careful look at the coding
> >> change. This may break backwards and forewards compatibility. Maybe
> >> Richard is able to explain if this change is save or not.
> >>
> >> Fred
> >>
> >> On the road
> >>
> >> Am 09.04.2012 um 18:02 schrieb "Sebastian Reitenbach"<address@hidden>:
> >>
> >>> Hi,
> >>>
> >>> while looking at compilation warnings from the latest releases, I found
> >>> in -gui (svn) some parts in NSTableView that would need to be changed.
> >>> First is easy, declare i as NSUInteger (was unsigned before). Further I
> >>> think _selected_item declared in the header as NSInteger also should be a
> >>> NSUInteger.
> >>>
> >>> is it OK when I commit the patch?
> >>>
> >>> Sebastian
> >>>
> >>> Index: Source/NSTabView.m
> >>> ===================================================================
> >>> --- Source/NSTabView.m (revision 35049)
> >>> +++ Source/NSTabView.m (working copy)
> >>> @@ -123,7 +123,7 @@
> >>>
> >>> - (void) removeTabViewItem: (NSTabViewItem*)tabViewItem
> >>> {
> >>> - unsigned i = [_items indexOfObject: tabViewItem];
> >>> + NSUInteger i = [_items indexOfObject: tabViewItem];
> >>>
> >>> if (i == NSNotFound)
> >>> return;
> >>> @@ -202,7 +202,7 @@
> >>>
> >>> - (void) selectNextTabViewItem: (id)sender
> >>> {
> >>> - if ((_selected_item != NSNotFound)&& ((unsigned)(_selected_item + 1)<
> >>> [_items count]))
> >>> + if ((_selected_item != NSNotFound)&& ((_selected_item + 1)< [_items
> >>> count]))
> >>> {
> >>> [self selectTabViewItemAtIndex: _selected_item + 1];
> >>> }
> >>> @@ -550,7 +550,7 @@
> >>> [aCoder encodeValueOfObjCType: @encode(BOOL) at:&_draws_background];
> >>> [aCoder encodeValueOfObjCType: @encode(BOOL) at:&_truncated_label];
> >>> [aCoder encodeConditionalObject: _delegate];
> >>> - [aCoder encodeValueOfObjCType: "i" at:&_selected_item];
> >>> + [aCoder encodeValueOfObjCType: "I" at:&_selected_item];
> >>> }
> >>> }
> >>>
> >>> @@ -631,7 +631,7 @@
> >>> [aDecoder decodeValueOfObjCType: @encode(BOOL)
> >>> at:&_draws_background];
> >>> [aDecoder decodeValueOfObjCType: @encode(BOOL)
> >>> at:&_truncated_label];
> >>> _delegate = [aDecoder decodeObject];
> >>> - [aDecoder decodeValueOfObjCType: "i" at:&_selected_item];
> >>> + [aDecoder decodeValueOfObjCType: "I" at:&_selected_item];
> >>> _selected = [_items objectAtIndex: _selected_item];
> >>> }
> >>> return self;
> >>> Index: Headers/AppKit/NSTabView.h
> >>> ===================================================================
> >>> --- Headers/AppKit/NSTabView.h (revision 35049)
> >>> +++ Headers/AppKit/NSTabView.h (working copy)
> >>> @@ -54,7 +54,7 @@
> >>> BOOL _draws_background;
> >>> BOOL _truncated_label;
> >>> id _delegate;
> >>> - NSInteger _selected_item;
> >>> + NSUInteger _selected_item;
> >>> }
> >>> - (void)addTabViewItem:(NSTabViewItem *)tabViewItem;
> >>> - (void)insertTabViewItem:(NSTabViewItem *)tabViewItem
>
>
> _______________________________________________
> Gnustep-dev mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/gnustep-dev
- some unsigned/NSInteger to NSUInteger changes in -gui, Sebastian Reitenbach, 2012/04/09
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Fred Kiefer, 2012/04/09
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Eric Wasylishen, 2012/04/09
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Fred Kiefer, 2012/04/09
- Re: some unsigned/NSInteger to NSUInteger changes in -gui,
Sebastian Reitenbach <=
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Wolfgang Lux, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Sebastian Reitenbach, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, David Chisnall, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Sebastian Reitenbach, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, David Chisnall, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Sebastian Reitenbach, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Fred Kiefer, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, David Chisnall, 2012/04/10
- Re: some unsigned/NSInteger to NSUInteger changes in -gui, Sebastian Reitenbach, 2012/04/11