Hi All,

Mac project, XCode 6.3.1, non ARC.

I’m getting the following Analyzer (Blue) Warnings in the method below (see 
comments):

-(void) insertIndexes:(NSUInteger*) theIndexBufferPtr length:(NSInteger) 
theInsertLength atPosition:(NSUInteger) thePosition 
{
void*                                   myOriginalBaseBufferPtr;
NSUInteger*                             myInsertIndexBufferPtr;
NSUInteger*                             mySourceIndexBufferPtr;
NSUInteger*                             myDestIndexBufferPtr;
NSUInteger                              myNewLength;
NSUInteger                              myCopyLength;
NSUInteger                              myIndex;
NSInteger                               myInsertPosition;

if (theInsertLength <= 0)
        return;

myOriginalBaseBufferPtr = NULL;

if (thePosition >= self.pIndexLength)
        myInsertPosition = self.pIndexLength;
else
        myInsertPosition = thePosition;

myOriginalBaseBufferPtr = NULL;
myNewLength = self.pIndexLength + theInsertLength;
if (myNewLength == self.pIndexLength)
        return;

myInsertIndexBufferPtr = theIndexBufferPtr;
myOriginalBaseBufferPtr = [self claimIndexBuffer];
mySourceIndexBufferPtr = myOriginalBaseBufferPtr;

if (myNewLength > self.pIndexMaximumLength)
        self.pIndexMaximumLength = myNewLength;

[self setupIndexBuffer];                                                        
        //This sets self.pIndexBaseBufferPtr to a buffer created with malloc()
myDestIndexBufferPtr = self.pIndexBaseBufferPtr;

//**
//**    Copy the Buffer Up to the Insert Position
//**    
myCopyLength = myInsertPosition - 1;
while(myCopyLength > 0)
        {
        myIndex = *mySourceIndexBufferPtr;
        *myDestIndexBufferPtr = myIndex;                                        
        //********** Warning Dereference of null pointer (loaded from variable 
myDestIndexBufferPtr)
        
        mySourceIndexBufferPtr++;
        myDestIndexBufferPtr++;
        myCopyLength--;
        }

//**
//**    Copy the Indexes to Insert to the Destination Buffer
//**    
myCopyLength = theInsertLength;
while(myCopyLength > 0)
        {
        myIndex = *myInsertIndexBufferPtr;
        *myDestIndexBufferPtr = myIndex;                                        
//********** Warning Dereference of null pointer (loaded from variable 
myDestIndexBufferPtr)
        
        myInsertIndexBufferPtr++;
        myDestIndexBufferPtr++;
        myCopyLength--;
        }

//**
//**    Copy the Remaining Part of the Original Buffer
//**    
myCopyLength = self.pIndexLength - thePosition;
while(myCopyLength > 0)
        {
        myIndex = *mySourceIndexBufferPtr;
        *myDestIndexBufferPtr = myIndex;
        
        mySourceIndexBufferPtr++;
        myDestIndexBufferPtr++;
        myCopyLength--;
        }

self.pIndexLength = myNewLength;

if (myOriginalBaseBufferPtr != NULL)
        free(myOriginalBaseBufferPtr);
}


The properties are defined as so:

@property (nonatomic,assign)                    void*                           
                pIndexBaseBufferPtr;
@property (nonatomic,assign)                    NSUInteger                      
                pIndexBaseBufferSize;
@property (nonatomic,assign)                    NSUInteger                      
                pIndexLength;
@property (nonatomic,assign)                    NSUInteger                      
                pIndexMaximumLength;


Any ideas why its giving a warning? It all looks fine to me or am I missing 
something? From clicking on the warning in XCode, I it thinks 
“setupIndexBuffer” is setting self. pIndexBaseBufferPtr to NULL. But here is 
that method and it doesn’t!

-(void) setupIndexBuffer
{
void*                           myBaseBufferPtr;

if (self.pIndexBaseBufferPtr != NULL)
        free(self.pIndexBaseBufferPtr);

self.pIndexBaseBufferSize = (self.pIndexMaximumLength * sizeof(NSUInteger));
myBaseBufferPtr = malloc(self.pIndexBaseBufferSize);
self.pIndexBaseBufferPtr = myBaseBufferPtr;

[self clearIndexBuffer];
}

I suppose I could change this code to read:

self.pIndexBaseBufferPtr = [self setupIndexBuffer];
myDestIndexBufferPtr = self.pIndexBaseBuffer;

And change it wherever it’s referenced (this in an internal private method), 
but I shouldn’t need to?

All the Best
Dave



_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to