Fix mixed measurements, begin big file edge case tests
This commit is contained in:
parent
5b1abfc541
commit
d8e06cc491
10
buffer.c
10
buffer.c
|
@ -73,7 +73,7 @@ Buffer* b_create(short init_capacity, char inc_factor, char o_mode) {
|
||||||
free(pBD);
|
free(pBD);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
pBD->addc_offset = OFFSET_RESET;
|
||||||
pBD->capacity = init_capacity;
|
pBD->capacity = init_capacity;
|
||||||
/* END CONFIGURING BUFFER */
|
/* END CONFIGURING BUFFER */
|
||||||
return pBD;
|
return pBD;
|
||||||
|
@ -165,7 +165,7 @@ int b_mode(Buffer* const pBD) {
|
||||||
*/
|
*/
|
||||||
size_t b_incfactor(Buffer* const pBD) {
|
size_t b_incfactor(Buffer* const pBD) {
|
||||||
if (!pBD) { return ERR_INC_FACTOR; }
|
if (!pBD) { return ERR_INC_FACTOR; }
|
||||||
return (size_t) pBD->inc_factor;
|
return (size_t)(unsigned char) pBD->inc_factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reports the current position of the mark offset in the character buffer
|
/* Reports the current position of the mark offset in the character buffer
|
||||||
|
@ -283,7 +283,7 @@ pBuffer b_addc(pBuffer const pBD, char symbol) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
else if (pBD->mode == ADD_OP_MODE) { /* Calculate new size for additive mode */
|
else if (pBD->mode == ADD_OP_MODE) { /* Calculate new size for additive mode */
|
||||||
new_cap = pBD->capacity + pBD->inc_factor;
|
new_cap = pBD->capacity + (unsigned char) pBD->inc_factor;
|
||||||
/* Make sure no short overflow happened */
|
/* Make sure no short overflow happened */
|
||||||
if (new_cap < MIN_CAPACITY){
|
if (new_cap < MIN_CAPACITY){
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -295,8 +295,10 @@ pBuffer b_addc(pBuffer const pBD, char symbol) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* msvc warns about possible loss of data when converting from double to short, this is fine
|
||||||
|
because the buffer doesn't deal with floating points*/
|
||||||
avail_space = SHRT_MAX - pBD->capacity;
|
avail_space = SHRT_MAX - pBD->capacity;
|
||||||
new_inc = avail_space * ((double) pBD->inc_factor) / 100;
|
new_inc = (short) (avail_space * (((double) pBD->inc_factor) / 100));
|
||||||
|
|
||||||
/* Check if there is enough space for the new increment and
|
/* Check if there is enough space for the new increment and
|
||||||
"trim" it if needed */
|
"trim" it if needed */
|
||||||
|
|
2
buffer.h
2
buffer.h
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
/* standard header files */
|
/* standard header files */
|
||||||
#include <stdio.h> /* standard input/output */
|
#include <stdio.h> /* standard input/output */
|
||||||
#include <mm_malloc.h> /* for dynamic memory allocation. NOTE: USE MALLOC.H FOR LINUX/WINDOWS.THIS IS FOR MACOS ONLY*/
|
#include <malloc.h> /* for dynamic memory allocation. NOTE: USE MALLOC.H FOR LINUX/WINDOWS.THIS IS FOR MACOS ONLY*/
|
||||||
#include <limits.h> /* implementation-defined data type ranges and limits */
|
#include <limits.h> /* implementation-defined data type ranges and limits */
|
||||||
|
|
||||||
/* constant definitions */
|
/* constant definitions */
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
/* constant definitions */
|
/* constant definitions */
|
||||||
#define INIT_CAPACITY 200 /* initial buffer capacity */
|
#define INIT_CAPACITY 200 /* initial buffer capacity */
|
||||||
#define INC_FACTOR 15 /* increment factor */
|
#define INC_FACTOR 15 /* increment factor */
|
||||||
|
|
||||||
/*check for ANSI C compliancy */
|
/*check for ANSI C compliancy */
|
||||||
#define ANSI_C 0
|
#define ANSI_C 0
|
||||||
|
|
Loading…
Reference in New Issue