/* Parse a C expression from text in a string */
-//#if defined(_MSC_VER)
-//#include <malloc.h>
-//#endif
-
#include "config.h"
#include "cpplib.h"
//extern char *xmalloc PARAMS ((unsigned));
//extern char *xrealloc PARAMS ((char *, unsigned));
-#ifdef MULTIBYTE_CHARS
#include <stdlib.h>
+#ifdef MULTIBYTE_CHARS
#include <locale.h>
#endif
if (largest_digit < digit)
largest_digit = digit;
nd = n * base + digit;
- overflow |= ULONG_MAX_over_base < n | nd < n;
+ overflow |= ((ULONG_MAX_over_base < n) | (nd < n)) ;
n = nd;
}
cpp_reader *pfile)
{
register int c;
- register int namelen;
+/* register int namelen; */
register struct token *toktab;
enum cpp_token token;
struct operation op;
It is mostly copied from c-lex.c. */
{
register int result = 0;
- register num_chars = 0;
+ register int num_chars = 0;
unsigned width = MAX_CHAR_TYPE_SIZE;
int wide_flag = 0;
int max_chars;
{
c = cpp_parse_escape (pfile, &ptr);
if (width < HOST_BITS_PER_INT
- && (unsigned) c >= (1 << width))
+ && (unsigned) c >= (1U << width))
cpp_pedwarn (pfile,
"escape sequence out of range for character");
}
#define COMPARE(OP) \
top->unsignedp = 0;\
- top->value = (unsigned1 || unsigned2) ? (unsigned long) v1 OP v2 : (v1 OP v2)
+ top->value = (unsigned1 || unsigned2) ? (unsigned long) v1 OP (unsigned long) v2 : (v1 OP v2)
/* Parse and evaluate a C expression, reading from PFILE.
Returns the value of the expression. */
struct operation *stack = init_stack;
struct operation *limit = stack + INIT_STACK_SIZE;
register struct operation *top = stack;
- int lprio, rprio;
+ int lprio, rprio = 0;
top->rprio = 0;
top->flags = 0;
if (top != stack)
cpp_error (pfile, "internal error in #if expression");
if (stack != init_stack)
- free (stack);
+ Safe_free (stack);
return top->value;
}
top++;
}
syntax_error:
if (stack != init_stack)
- free (stack);
+ Safe_free (stack);
skip_rest_of_line (pfile);
return 0;
}