799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
|
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
|
-
-
+
+
-
+
-
+
-
+
|
PRE_IVAR->lastMem->next = preMem;
PRE_IVAR->lastMem = preMem;
return (char*)pointer + PRE_MEM_ALIGN;
}
- (void*)allocMemoryForNItems: (size_t)nItems
ofSize: (size_t)size
- (void*)allocMemoryWithItemSize: (size_t)itemSize
count: (size_t)count
{
if (nItems == 0 || size == 0)
if (itemSize == 0 || count == 0)
return NULL;
if (nItems > SIZE_MAX / size)
if (count > SIZE_MAX / itemSize)
@throw [OFOutOfRangeException exceptionWithClass: isa];
return [self allocMemoryWithSize: nItems * size];
return [self allocMemoryWithSize: itemSize * count];
}
- (void*)resizeMemory: (void*)pointer
toSize: (size_t)size
{
void *new;
struct pre_mem *preMem;
|
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
|
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
|
-
-
+
+
-
-
+
+
-
+
-
+
-
+
|
PRE_IVAR->lastMem = preMem;
}
return (char*)new + PRE_MEM_ALIGN;
}
- (void*)resizeMemory: (void*)pointer
toNItems: (size_t)nItems
ofSize: (size_t)size
itemSize: (size_t)itemSize
count: (size_t)count
{
if (pointer == NULL)
return [self allocMemoryForNItems: nItems
ofSize: size];
return [self allocMemoryWithItemSize: itemSize
count: count];
if (nItems == 0 || size == 0) {
if (itemSize == 0 || count == 0) {
[self freeMemory: pointer];
return NULL;
}
if (nItems > SIZE_MAX / size)
if (count > SIZE_MAX / itemSize)
@throw [OFOutOfRangeException exceptionWithClass: isa];
return [self resizeMemory: pointer
toSize: nItems * size];
toSize: itemSize * count];
}
- (void)freeMemory: (void*)pointer
{
if (pointer == NULL)
return;
|
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
|
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
|
-
-
+
+
-
-
+
+
|
*/
+ (void*)allocMemoryWithSize: (size_t)size
{
@throw [OFNotImplementedException exceptionWithClass: self
selector: _cmd];
}
+ (void*)allocMemoryForNItems: (size_t)nItems
ofSize: (size_t)size
+ (void*)allocMemoryWithItemSize: (size_t)itemSize
count: (size_t)count
{
@throw [OFNotImplementedException exceptionWithClass: self
selector: _cmd];
}
+ (void*)resizeMemory: (void*)pointer
toSize: (size_t)size
{
@throw [OFNotImplementedException exceptionWithClass: self
selector: _cmd];
}
+ (void*)resizeMemory: (void*)pointer
toNItems: (size_t)nItems
ofSize: (size_t)size
itemSize: (size_t)itemSize
count: (size_t)count
{
@throw [OFNotImplementedException exceptionWithClass: self
selector: _cmd];
}
+ (void)freeMemory: (void*)pointer
{
|