fixing memory problems in nupa_substitute and other

This commit is contained in:
dwarning 2007-12-27 16:47:36 +00:00
parent b90b52e1ba
commit c608e4a997
4 changed files with 55 additions and 61 deletions

View File

@ -29,42 +29,42 @@ typedef char string[258];
void sini( char * s, int i);
void sfix(char * s, int i, int max);
int maxlen(char * s);
char * pscopy( char * s, char * a, int i,int j);
char * pscopy_up( char * s, char * a, int i,int j);
unsigned char scopy( char * a, char * b);
unsigned char scopy_up( char * a, char * b);
unsigned char ccopy( char * a, char c);
unsigned char sadd( char * s, char * t);
unsigned char nadd( char * s, long n);
unsigned char cadd( char * s, char c);
unsigned char sins( char * s, char * t);
unsigned char cins( char * s, char c);
int cpos( char c, char * s);
int spos( char * sub, char * s);
int maxlen(char * s);
char * pscopy( char * s, char * a, int i,int j);
char * pscopy_up( char * s, char * a, int i,int j);
unsigned char scopy( char * a, char * b);
unsigned char scopy_up( char * a, char * b);
unsigned char ccopy( char * a, char c);
unsigned char sadd( char * s, char * t);
unsigned char nadd( char * s, long n);
unsigned char cadd( char * s, char c);
unsigned char sins( char * s, char * t);
unsigned char cins( char * s, char c);
int cpos( char c, char * s);
int spos( char * sub, char * s);
int ci_prefix( register char *p, register char *s );
int length(char * s);
unsigned char steq(char * s, char * t);
unsigned char stne(char * s, char * t);
int scompare(char * a, char * b);
int ord(char c);
int pred(int i);
int succ(int i);
int length(char * s);
unsigned char steq(char * s, char * t);
unsigned char stne(char * s, char * t);
int scompare(char * a, char * b);
int ord(char c);
int pred(int i);
int succ(int i);
void stri(long n, char * s);
void strif(long n, int f, char * s);
void strf(double x, int a, int b, char * s); /* float -> string */
long ival(char * s, int *err);
double rval(char * s, int *err);
long ival(char * s, int *err);
double rval(char * s, int *err);
char upcase(char c);
char lowcase(char c);
int hi(long w);
int lo(long w);
unsigned char odd(long x);
unsigned char alfa(char c);
unsigned char num(char c);
unsigned char alfanum(char c);
char * stupcase( char * s);
char upcase(char c);
char lowcase(char c);
int hi(long w);
int lo(long w);
unsigned char odd(long x);
unsigned char alfa(char c);
unsigned char num(char c);
unsigned char alfanum(char c);
char * stupcase( char * s);
/***** primitive input-output ***/
void wc(char c);
@ -72,24 +72,22 @@ void wln(void);
void ws( char * s);
void wi(long i);
void rs( char * s);
char rc(void);
char rc(void);
int freadstr(FILE * f, char * s, int max);
char freadc(FILE * f);
long freadi(FILE * f);
int freadstr(FILE * f, char * s, int max);
char freadc(FILE * f);
long freadi(FILE * f);
long np_round(double d); // sjb to avoid clash with round() in math.h
long np_trunc(double x); // sjb to avoid clash with trunc() in math.h
double sqr(double x);
double absf(double x); /* abs */
long absi( long i);
double frac(double x);
long np_round(double d); // sjb to avoid clash with round() in math.h
long np_trunc(double x); // sjb to avoid clash with trunc() in math.h
double sqr(double x);
double absf(double x); /* abs */
long absi( long i);
double frac(double x);
unsigned char reset(FILE * f);
unsigned char rewrite(FILE * f);
unsigned char reset(FILE * f);
unsigned char rewrite(FILE * f);
void rawcopy(void * a, void * b, int la, int lb);
void * new(long sz);
void * new(long sz);
void dispose(void * p);
char * newstring(int n);
char * newstring(int n);

View File

@ -9,7 +9,7 @@
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <math.h> /* -- ceil floor */
#include "config.h"
#ifdef HAS_WINDOWS
#include "wstdio.h"

View File

@ -67,7 +67,7 @@ typedef struct _ttdico {
void initdico(tdico * dico);
int donedico(tdico * dico);
unsigned char defsubckt( tdico *dico, char * s, unsigned short w, char categ);
unsigned char defsubckt( tdico *dico, char * s, int w, char categ);
int findsubckt( tdico *dico, char * s, char * subname);
unsigned char nupa_substitute( tdico *dico, char * s, char * r, unsigned char err);
unsigned char nupa_assignment( tdico *dico, char * s, char mode);

View File

@ -22,9 +22,7 @@ Todo:
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "general.h"
#include "numparam.h"
#include "ngspice.h"
@ -195,14 +193,12 @@ stripbraces (char *s)
if (t[i - 1] > ' ')
cadd (t, ' ');
nadd (t, PlaceHold + placeholder);
cadd (t, ' '); // add extra character to increase number significant digits for evaluated numbers
cadd (t, ' ');
cadd (t, ' ');
cadd (t, ' ');
cadd (t, ' ');
cadd (t, ' ');
cadd (t, ' ');
cadd (t, ' '); // add extra character to increase number significant digits for evaluated numbers
cadd (t, ' ');
cadd (t, ' ');
cadd (t, ' ');
nadd (t, PlaceHold + placeholder);
cadd (t, ' ');
if (s[j] >= ' ')
cadd (t, ' ');
@ -754,7 +750,7 @@ nupa_eval (char *s, int linenum)
{
int idef; /* subckt definition line */
char c, keep, *ptr;
int i;
unsigned int i;
Str (80, subname);
unsigned char err = 1;