* This software is part of the SBCL system. See the README file for
* more information.
*
* This software is derived from the CMU CL system, which was
* written at Carnegie Mellon University and released into the
* public domain. The software is in the public domain and is
* provided with absolutely no warranty. See the COPYING and CREDITS
* files for more information.
*/
int read_var_integer(unsigned char *source, int *offset) {
unsigned char *ptr = source + (offset ? *offset : 0);
int result = 0;
unsigned char octet;
int k = 0;
for (;; k += 7) {
octet = *(ptr++);
result |= (octet & 0x7f) << k;
if (!(octet & 0x80)) {
break;
}
}
if (offset) {
*offset += (ptr - source);
}
return result;
}