oops - broke circular buffer
This commit is contained in:
		
							parent
							
								
									71d5bf4d08
								
							
						
					
					
						commit
						37321196a4
					
				
					 1 changed files with 2 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -219,7 +219,7 @@ console_intr(int (*getc)(void))
 | 
			
		|||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      if(c != 0 && input.e < input.r+INPUT_BUF){
 | 
			
		||||
        input.buf[input.e++] = c;
 | 
			
		||||
        input.buf[input.e++ % INPUT_BUF] = c;
 | 
			
		||||
        cons_putc(c);
 | 
			
		||||
        if(c == '\n' || c == C('D') || input.e == input.r+INPUT_BUF){
 | 
			
		||||
          input.w = input.e;
 | 
			
		||||
| 
						 | 
				
			
			@ -250,7 +250,7 @@ console_read(struct inode *ip, char *dst, int n)
 | 
			
		|||
      }
 | 
			
		||||
      sleep(&input.r, &input.lock);
 | 
			
		||||
    }
 | 
			
		||||
    c = input.buf[input.r++];
 | 
			
		||||
    c = input.buf[input.r++ % INPUT_BUF];
 | 
			
		||||
    if(c == C('D')){  // EOF
 | 
			
		||||
      if(n < target){
 | 
			
		||||
        // Save ^D for next time, to make sure
 | 
			
		||||
| 
						 | 
				
			
			@ -263,8 +263,6 @@ console_read(struct inode *ip, char *dst, int n)
 | 
			
		|||
    --n;
 | 
			
		||||
    if(c == '\n')
 | 
			
		||||
      break;
 | 
			
		||||
    if(input.r >= INPUT_BUF)
 | 
			
		||||
      input.r = 0;
 | 
			
		||||
  }
 | 
			
		||||
  release(&input.lock);
 | 
			
		||||
  ilock(ip);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue