From: brunobg AT geocities DOT com (Bruno Barberi Gnecco) Newsgroups: comp.os.msdos.djgpp,comp.lang.c Subject: Realloc()ing data of a node from a linked list Date: 5 Aug 1998 12:24:03 -0500 Organization: Newscene Public Access Usenet News Service (http://www.newscene.com/) Lines: 46 Message-ID: <35c89230.2078137@news3.newscene.com> To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk I'm writing a function that inserts a character in the data of a node like: struct node { struct node *next, *previous; unsigned char * data; } The function I wrote is (dl_strlen is just strlen(pointers.current->data): void dl_insert_char ( unsigned char newdata, int n, BOOLEAN insert ) { int i, size, length = dl_strlen(); if ( insert == TRUE ) { if ( n >= length ) size = n + 1; else size = length + 1; if ( realloc ( pointers.current->data, size ) == NULL ) { alert("Could not allocate memory at dl_insert_char"); return; } else { if ( n < length ) { for ( i = length; i > n; i-- ) pointers.current->data[i] = pointers.current->data[i-1]; } else { for ( i = length; i < n; i++ ) pointers.current->data[i] = 32; } } } else { if ( n >= length ) { if ( realloc ( pointers.current->data, n + 1 ) == NULL ) { alert("Could not allocate memory at dl_insert_char"); return; } for ( i = length+1; i < n; i++ ) pointers.current->data[i] = 32; } } pointers.current->data[n] = newdata; } Where pointers.current is a pointer to the node I'm using. This function works about 3/5 of the time, but sometimes it just goes mad after the last line, and if string that was "Stri", the new character being 'n', the result is "Stri\030t\120\093"; garbage. What's wrong? "There's never enough time to do all the nothing you want" Bill Watterson Bruno Barberi Gnecco ICQ #1383173 - PGP 5.0i user My other OS is Linux -=- http://graphx.home.ml.org -=- Electric Eng, Poli