Explorar el Código

review fix: add nil receivers to other read-only ModeSet methods

tags/v0.12.0
Shivaram Lingamneni hace 6 años
padre
commit
f408d0f37b
Se han modificado 2 ficheros con 29 adiciones y 7 borrados
  1. 16
    7
      irc/modes/modes.go
  2. 13
    0
      irc/modes/modes_test.go

+ 16
- 7
irc/modes/modes.go Ver fichero

@@ -366,6 +366,10 @@ func (set *ModeSet) SetMode(mode Mode, on bool) (applied bool) {
366 366
 
367 367
 // return the modes in the set as a slice
368 368
 func (set *ModeSet) AllModes() (result []Mode) {
369
+	if set == nil {
370
+		return
371
+	}
372
+
369 373
 	set.RLock()
370 374
 	defer set.RUnlock()
371 375
 
@@ -376,22 +380,27 @@ func (set *ModeSet) AllModes() (result []Mode) {
376 380
 }
377 381
 
378 382
 // String returns the modes in this set.
379
-func (set *ModeSet) String() string {
383
+func (set *ModeSet) String() (result string) {
384
+	if set == nil {
385
+		return
386
+	}
387
+
380 388
 	set.RLock()
381 389
 	defer set.RUnlock()
382 390
 
383
-	if len(set.modes) == 0 {
384
-		return ""
385
-	}
386
-	var result []byte
391
+	var buf strings.Builder
387 392
 	for mode := range set.modes {
388
-		result = append(result, mode.String()...)
393
+		buf.WriteRune(rune(mode))
389 394
 	}
390
-	return string(result)
395
+	return buf.String()
391 396
 }
392 397
 
393 398
 // Prefixes returns a list of prefixes for the given set of channel modes.
394 399
 func (set *ModeSet) Prefixes(isMultiPrefix bool) (prefixes string) {
400
+	if set == nil {
401
+		return
402
+	}
403
+
395 404
 	set.RLock()
396 405
 	defer set.RUnlock()
397 406
 

+ 13
- 0
irc/modes/modes_test.go Ver fichero

@@ -35,3 +35,16 @@ func TestSetMode(t *testing.T) {
35 35
 		t.Errorf("unexpected modestring: %s", modeString)
36 36
 	}
37 37
 }
38
+
39
+func TestNilReceivers(t *testing.T) {
40
+	var set ModeSet
41
+
42
+	if set.HasMode(Invisible) {
43
+		t.Errorf("nil ModeSet should not have any modes")
44
+	}
45
+
46
+	str := set.String()
47
+	if str != "" {
48
+		t.Errorf("nil Modeset should have empty String(), got %v instead", str)
49
+	}
50
+}

Loading…
Cancelar
Guardar