bug fix:修正了InputMsg在空字符串场景下的问题
This commit is contained in:
		
							parent
							
								
									d528a583f4
								
							
						
					
					
						commit
						3c83d1d39f
					
				@ -112,7 +112,10 @@ func (star *StarBuffer) Read(buf []byte) (int, error) {
 | 
			
		||||
		data, err := star.getByte()
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if err == io.EOF {
 | 
			
		||||
				return sum, err
 | 
			
		||||
				if sum == 0 {
 | 
			
		||||
					return sum, err
 | 
			
		||||
				}
 | 
			
		||||
				return sum, nil
 | 
			
		||||
			}
 | 
			
		||||
			if err == os.ErrNotExist {
 | 
			
		||||
				i--
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								io.go
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								io.go
									
									
									
									
									
								
							@ -168,7 +168,7 @@ func MessageBox(hint string, defaultVal string) InputMsg {
 | 
			
		||||
	return InputMsg{msg: str, err: err}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (im InputMsg) IgnoreSliceParseError(i bool) InputMsg {
 | 
			
		||||
func (im *InputMsg) IgnoreSliceParseError(i bool) *InputMsg {
 | 
			
		||||
	im.skipSliceSigErr = i
 | 
			
		||||
	return im
 | 
			
		||||
}
 | 
			
		||||
@ -189,6 +189,9 @@ func (im InputMsg) SliceString(sep string) ([]string, error) {
 | 
			
		||||
	if im.err != nil {
 | 
			
		||||
		return nil, im.err
 | 
			
		||||
	}
 | 
			
		||||
	if len(strings.TrimSpace(im.msg)) == 0 {
 | 
			
		||||
		return []string{}, nil
 | 
			
		||||
	}
 | 
			
		||||
	return strings.Split(im.msg, sep), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										26
									
								
								io_test.go
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								io_test.go
									
									
									
									
									
								
							@ -21,3 +21,29 @@ func Test_Slice(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println(res)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestSliceMsg(t *testing.T) {
 | 
			
		||||
	var data = InputMsg{
 | 
			
		||||
		msg:             "",
 | 
			
		||||
		err:             nil,
 | 
			
		||||
		skipSliceSigErr: false,
 | 
			
		||||
	}
 | 
			
		||||
	res, err := data.SliceString(",")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println(res)
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if len(res) != 0 {
 | 
			
		||||
		t.Fatal(res)
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println(len(res))
 | 
			
		||||
	res2, err := data.SliceInt64(",")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println(res2)
 | 
			
		||||
		t.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	if len(res2) != 0 {
 | 
			
		||||
		t.Fatal(res2)
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Println(len(res2))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								sync.go
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								sync.go
									
									
									
									
									
								
							@ -16,7 +16,7 @@ func NewWaitGroup(maxCount int) WaitGroup {
 | 
			
		||||
	return WaitGroup{wg: &sync.WaitGroup{}, maxCount: uint32(maxCount)}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (swg *WaitGroup) Add(delta int) {
 | 
			
		||||
func (w *WaitGroup) Add(delta int) {
 | 
			
		||||
	var Udelta uint32
 | 
			
		||||
	if delta < 0 {
 | 
			
		||||
		Udelta = uint32(-delta - 1)
 | 
			
		||||
@ -24,32 +24,32 @@ func (swg *WaitGroup) Add(delta int) {
 | 
			
		||||
		Udelta = uint32(delta)
 | 
			
		||||
	}
 | 
			
		||||
	for {
 | 
			
		||||
		allC := atomic.LoadUint32(&swg.allCount)
 | 
			
		||||
		if atomic.LoadUint32(&swg.maxCount) == 0 || atomic.LoadUint32(&swg.maxCount) >= allC+uint32(delta) {
 | 
			
		||||
		allC := atomic.LoadUint32(&w.allCount)
 | 
			
		||||
		if atomic.LoadUint32(&w.maxCount) == 0 || atomic.LoadUint32(&w.maxCount) >= allC+uint32(delta) {
 | 
			
		||||
			if delta < 0 {
 | 
			
		||||
				atomic.AddUint32(&swg.allCount, ^uint32(Udelta))
 | 
			
		||||
				atomic.AddUint32(&w.allCount, ^uint32(Udelta))
 | 
			
		||||
			} else {
 | 
			
		||||
				atomic.AddUint32(&swg.allCount, uint32(Udelta))
 | 
			
		||||
				atomic.AddUint32(&w.allCount, uint32(Udelta))
 | 
			
		||||
			}
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		time.Sleep(time.Microsecond)
 | 
			
		||||
	}
 | 
			
		||||
	swg.wg.Add(delta)
 | 
			
		||||
	w.wg.Add(delta)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (swg *WaitGroup) Done() {
 | 
			
		||||
	swg.Add(-1)
 | 
			
		||||
func (w *WaitGroup) Done() {
 | 
			
		||||
	w.Add(-1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (swg *WaitGroup) Wait() {
 | 
			
		||||
	swg.wg.Wait()
 | 
			
		||||
func (w *WaitGroup) Wait() {
 | 
			
		||||
	w.wg.Wait()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (swg *WaitGroup) GetMaxWaitNum() int {
 | 
			
		||||
	return int(atomic.LoadUint32(&swg.maxCount))
 | 
			
		||||
func (w *WaitGroup) GetMaxWaitNum() int {
 | 
			
		||||
	return int(atomic.LoadUint32(&w.maxCount))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (swg *WaitGroup) SetMaxWaitNum(num int) {
 | 
			
		||||
	atomic.AddUint32(&swg.maxCount, uint32(num))
 | 
			
		||||
func (w *WaitGroup) SetMaxWaitNum(num int) {
 | 
			
		||||
	atomic.AddUint32(&w.maxCount, uint32(num))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user