Added the new mallocWithFallback function which tries to allocate the specified size and falls back to a smaller size when fails
This commit is contained in:
		
							parent
							
								
									d9dfc15f21
								
							
						
					
					
						commit
						4635f4daaa
					
				@ -68,3 +68,20 @@ uint32_t monthNumTo3LetterAbbreviation(const uint8_t monthNumber)
 | 
			
		||||
    
 | 
			
		||||
  return toReturn;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void *mallocWithFallback(size_t requestedSize, size_t *acceptedSize)
 | 
			
		||||
{
 | 
			
		||||
  void *allocAddr(nullptr);
 | 
			
		||||
  uint32_t divider(1);
 | 
			
		||||
  
 | 
			
		||||
  do
 | 
			
		||||
  {
 | 
			
		||||
    requestedSize /= divider++;
 | 
			
		||||
    allocAddr = malloc(requestedSize);
 | 
			
		||||
  } while(!allocAddr && requestedSize >= 50); //If we can't even manage to malloc 50 bytes then we should give up and cry
 | 
			
		||||
 | 
			
		||||
  if(acceptedSize && allocAddr)*acceptedSize = requestedSize;
 | 
			
		||||
  else if(acceptedSize)*acceptedSize = 0;
 | 
			
		||||
 | 
			
		||||
  return allocAddr;
 | 
			
		||||
}
 | 
			
		||||
@ -5,4 +5,5 @@
 | 
			
		||||
char *addChar(char *pointer, const char character);
 | 
			
		||||
char *dateTimeFormater(char *pointer, const uint8_t value, const char character);
 | 
			
		||||
uint32_t monthNumTo3LetterAbbreviation(const uint8_t monthNumber);
 | 
			
		||||
void *mallocWithFallback(size_t requestedSize, size_t *acceptedSize = nullptr);
 | 
			
		||||
#endif // UTILITIES_H
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user