MCPcopy Create free account
hub / github.com/abbeycode/UnrarKit / Add

Method Add

Libraries/unrar/array.hpp:100–136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

98
99
100template <class T> void Array<T>::Add(size_t Items)
101{
102 BufSize+=Items;
103 if (BufSize>AllocSize)
104 {
105 if (MaxSize!=0 && BufSize>MaxSize)
106 {
107 ErrHandler.GeneralErrMsg(L"Maximum allowed array size (%u) is exceeded",MaxSize);
108 ErrHandler.MemoryError();
109 }
110
111 size_t Suggested=AllocSize+AllocSize/4+32;
112 size_t NewSize=Max(BufSize,Suggested);
113
114 T *NewBuffer;
115 if (Secure)
116 {
117 NewBuffer=(T *)malloc(NewSize*sizeof(T));
118 if (NewBuffer==NULL)
119 ErrHandler.MemoryError();
120 if (Buffer!=NULL)
121 {
122 memcpy(NewBuffer,Buffer,AllocSize*sizeof(T));
123 cleandata(Buffer,AllocSize*sizeof(T));
124 free(Buffer);
125 }
126 }
127 else
128 {
129 NewBuffer=(T *)realloc(Buffer,NewSize*sizeof(T));
130 if (NewBuffer==NULL)
131 ErrHandler.MemoryError();
132 }
133 Buffer=NewBuffer;
134 AllocSize=NewSize;
135 }
136}
137
138
139template <class T> void Array<T>::Alloc(size_t Items)

Callers 4

AddStringMethod · 0.80
AddVMCodeMethod · 0.80
ReadTextFileFunction · 0.80
ReadMethod · 0.80

Calls 3

cleandataFunction · 0.85
GeneralErrMsgMethod · 0.80
MemoryErrorMethod · 0.80

Tested by

no test coverage detected