I'm having problems understanding why following code leaks in one case, and not in the other case. The difference is
while(NULL!=fgets(buffer,length,file))//doesnt leak
while(NULL!=(buffer=fgets(buffer,length,file))//leaks
I thought it would be the same.
Full code below.
#include <stdio.h>
#include <stdlib.h>
#define LENS 10000
void no_leak(const char* argv){
  char *buffer = (char *) malloc(LENS);
  FILE *fp=fopen(argv,"r");
  while(NULL!=fgets(buffer,LENS,fp)){
    fprintf(stderr,"%s",buffer);
  }
  fclose(fp);
  fprintf(stderr,"%s\n",buffer);
  free(buffer);  
}
void with_leak(const char* argv){
  char *buffer = (char *) malloc(LENS);
  FILE *fp=fopen(argv,"r");
  while(NULL!=(buffer=fgets(buffer,LENS,fp))){
    fprintf(stderr,"%s",buffer);
  }
  fclose(fp);
  fprintf(stderr,"%s\n",buffer);
  free(buffer);  
}