@ -773,7 +773,7 @@ char *utilfdt_read(const char *filename)
*/
*/
static int do_fdtgrep ( struct display_info * disp , const char * filename )
static int do_fdtgrep ( struct display_info * disp , const char * filename )
{
{
struct fdt_region * region ;
struct fdt_region * region = NULL ;
int max_regions ;
int max_regions ;
int count = 100 ;
int count = 100 ;
char path [ 1024 ] ;
char path [ 1024 ] ;
@ -801,7 +801,7 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
* The first pass will count the regions , but if it is too many ,
* The first pass will count the regions , but if it is too many ,
* we do another pass to actually record them .
* we do another pass to actually record them .
*/
*/
for ( i = 0 ; i < 3 ; i + + ) {
for ( i = 0 ; i < 2 ; i + + ) {
region = malloc ( count * sizeof ( struct fdt_region ) ) ;
region = malloc ( count * sizeof ( struct fdt_region ) ) ;
if ( ! region ) {
if ( ! region ) {
fprintf ( stderr , " Out of memory for %d regions \n " ,
fprintf ( stderr , " Out of memory for %d regions \n " ,
@ -815,11 +815,14 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
disp - > flags ) ;
disp - > flags ) ;
if ( count < 0 ) {
if ( count < 0 ) {
report_error ( " fdt_find_regions " , count ) ;
report_error ( " fdt_find_regions " , count ) ;
free ( region ) ;
return - 1 ;
return - 1 ;
}
}
if ( count < = max_regions )
if ( count < = max_regions )
break ;
break ;
free ( region ) ;
free ( region ) ;
fprintf ( stderr , " Internal error with fdtgrep_find_region)( \n " ) ;
return - 1 ;
}
}
/* Optionally print a list of regions */
/* Optionally print a list of regions */