<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lang.go.devel">
    <title>gmane.comp.lang.go.devel</title>
    <link>http://blog.gmane.org/gmane.comp.lang.go.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72476"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72475"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72473"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72464"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72453"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72442"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72439"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72435"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72431"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72429"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72423"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72420"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72419"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72416"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72400"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72398"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72396"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72391"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72384"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lang.go.devel/72375"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72476">
    <title>code review 10410045: cmd/go: document that files beginning with . or _ are i... (issue 10410045)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72476</link>
    <description>&lt;pre&gt;Reviewers: golang-dev1,

Message:
Hello golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org,

I'd like you to review this change to
https://code.google.com/p/go


Description:
cmd/go: document that files beginning with . or _ are ignored

Fixes issue 5655.

Please review this at https://codereview.appspot.com/10410045/

Affected files:
   M src/cmd/go/doc.go
   M src/cmd/go/help.go
   M src/cmd/go/test.go


Index: src/cmd/go/doc.go
===================================================================
--- a/src/cmd/go/doc.go
+++ b/src/cmd/go/doc.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -396,9 +396,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;

  followed by detailed output for each failed package.

-'Go test' recompiles each package along with any files with names ending in
-"_test.go".  These additional files can contain test functions,
-benchmark functions, and example functions.  See 'go help testfunc' for  
more.
+'Go test' recompiles each package along with any files with names matching
+the file pattern "*_test.go".  (The file "_test.go" is ignored, as are all
+file names that begin with "." or "_".)
+These additional files can contain test functions, benchmark functions, and
+example functions.  See 'go help testfunc' for more.
  Each listed package causes the execution of a separate test binary.

  Test files that declare a package with the suffix "_test" will be compiled  
as a
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -584,6 +586,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  package made up of exactly those files, ignoring any build constraints
  in those files and ignoring any other files in the directory.

+File names that begin with "." or "_" are ignored by the go tool.
+

  Remote import path syntax

Index: src/cmd/go/help.go
===================================================================
--- a/src/cmd/go/help.go
+++ b/src/cmd/go/help.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -53,6 +53,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  single directory, the command is applied to a single synthesized
  package made up of exactly those files, ignoring any build constraints
  in those files and ignoring any other files in the directory.
+
+File names that begin with "." or "_" are ignored by the go tool.
  `,
  }

Index: src/cmd/go/test.go
===================================================================
--- a/src/cmd/go/test.go
+++ b/src/cmd/go/test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -45,9 +45,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;

  followed by detailed output for each failed package.

-'Go test' recompiles each package along with any files with names ending in
-"_test.go".  These additional files can contain test functions,
-benchmark functions, and example functions.  See 'go help testfunc' for  
more.
+'Go test' recompiles each package along with any files with names matching
+the file pattern "*_test.go".  (The file "_test.go" is ignored, as are all
+file names that begin with "." or "_".)
+These additional files can contain test functions, benchmark functions, and
+example functions.  See 'go help testfunc' for more.
  Each listed package causes the execution of a separate test binary.

  Test files that declare a package with the suffix "_test" will be compiled  
as a


&lt;/pre&gt;</description>
    <dc:creator>adg-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-19T06:30:38</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72475">
    <title>code review 10379049: go.tools/go/types: simplified lookup (issue 10379049)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72475</link>
    <description>&lt;pre&gt;Reviewers: adonovan,

Message:
Hello adonovan-hpIqsD4AKlfQT0dZR+AlfA&amp;lt; at &amp;gt;public.gmane.org (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go.tools


Description:
go.tools/go/types: simplified lookup

- much simpler lookup
- more result information
- will make tracking of pointer-ness easier

TODO: apply the same changes to method set computation

Please review this at https://codereview.appspot.com/10379049/

Affected files:
   M go/types/builtins.go
   M go/types/expr.go
   M go/types/gcimporter.go
   M go/types/lookup.go
   M go/types/testdata/decls2a.src


&lt;/pre&gt;</description>
    <dc:creator>gri-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-19T04:31:42</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72473">
    <title>code review 10402045: os/exec: fix leaked http transport in TestExtraFiles (issue 10402045)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72473</link>
    <description>&lt;pre&gt;Reviewers: golang-dev1,

Message:
Hello golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org,

I'd like you to review this change to
https://code.google.com/p/go


Description:
os/exec: fix leaked http transport in TestExtraFiles

Fixes issue 5593.

The http.Get call was leaking a file descriptor. This fd would normally
be cleaned up by the finaliser on os.File, but occasionally this was not
done in time. It is my guess that this is what was setting off the
TestPipeLookPathLeak failure

Please review this at https://codereview.appspot.com/10402045/

Affected files:
   M src/pkg/os/exec/exec_test.go


Index: src/pkg/os/exec/exec_test.go
===================================================================
--- a/src/pkg/os/exec/exec_test.go
+++ b/src/pkg/os/exec/exec_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7,12 +7,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  import (
  "bufio"
  "bytes"
+"crypto/tls"
  "fmt"
  "io"
  "io/ioutil"
  "net"
  "net/http"
  "net/http/httptest"
+"net/url"
  "os"
  "path/filepath"
  "runtime"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -345,7 +347,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  w.Write([]byte("Hello"))
  }))
  defer ts.Close()
-http.Get(ts.URL) // ignore result; just calling to force root cert loading
+
+// construct a http connection manually bypassing any caching in  
http.Client
+u, _ := url.Parse(ts.URL)
+conn, err := tls.Dial("tcp", u.Host, &amp;amp;tls.Config{InsecureSkipVerify:  
true, ServerName: "127.0.0.1"})
+if err != nil {
+t.Fatalf("dial failed: %v", err)
+}
+const r = "GET / HTTP/1.1\r\nConnection: close\r\n\r\n"
+if _, err := conn.Write([]byte(r)); err != nil {
+t.Fatalf("write failed: %v", err)
+}
+// ignore result; just calling to force root cert loading
+if _, err := ioutil.ReadAll(conn); err != nil {
+t.Fatalf("ReadAll failed: %v", err)
+}
+conn.Close()

  tf, err := ioutil.TempFile("", "")
  if err != nil {


&lt;/pre&gt;</description>
    <dc:creator>dave-7L4Cwp9BzA+sTnJN9+BGXg&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-19T03:39:10</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72464">
    <title>darwin-386 broken by cmd/go: simplify flags for coverage</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72464</link>
    <description>&lt;pre&gt;Change 4298a713c372 broke the darwin-386 build:
http://build.golang.org/log/c95c3e3c9f87d433f11e0569122cd38c46d142f0

cmd/go: simplify flags for coverage
The single flag -cover provides the default simplest behavior.
The other flags, -covermode and -coverprofile, provide more
control. The three flags interconnect to work well.

R=rsc, adg
CC=golang-dev
https://codereview.appspot.com/10364044

http://code.google.com/p/go/source/detail?r=4298a713c372

$ tail -200 &amp;lt; log
html
index/suffixarray
html/template
runtime/pprof
text/scanner
cmd/gofmt
crypto/x509
net/textproto
mime/multipart
cmd/yacc
crypto/tls
net/http
archive/tar
compress/bzip2
compress/lzw
hash/adler32
compress/zlib
container/list
container/ring
crypto/sha512
database/sql/driver
database/sql
debug/gosym
encoding/ascii85
encoding/base32
encoding/csv
hash/crc64
hash/fnv
image/color
image
image/draw
image/gif
image/jpeg
cmd/go
expvar
net/http/pprof
cmd/godoc
image/png
log/syslog
math/cmplx
net/http/cgi
net/http/cookiejar
net/http/fcgi
net/http/httptest
net/http/httputil
net/mail
net/rpc
net/smtp
os/user
net/rpc/jsonrpc
runtime/debug
runtime/race
testing
testing/iotest
testing/quick

# Testing packages.
ok  cmd/api0.030s
?   cmd/cgo[no test files]
ok  cmd/fix0.028s
ok  cmd/go0.062s
?   cmd/godoc[no test files]
ok  cmd/gofmt0.053s
?   cmd/yacc[no test files]
ok  archive/tar0.024s
ok  archive/zip0.059s
ok  bufio0.298s
ok  bytes0.273s
ok  compress/bzip20.087s
ok  compress/flate1.616s
ok  compress/gzip0.025s
ok  compress/lzw0.215s
ok  compress/zlib3.837s
ok  container/heap0.012s
ok  container/list0.016s
ok  container/ring0.021s
?   crypto[no test files]
ok  crypto/aes0.038s
ok  crypto/cipher0.021s
ok  crypto/des0.047s
ok  crypto/dsa0.023s
ok  crypto/ecdsa0.065s
ok  crypto/elliptic0.038s
ok  crypto/hmac0.022s
ok  crypto/md50.024s
ok  crypto/rand0.059s
ok  crypto/rc40.118s
ok  crypto/rsa1.016s
ok  crypto/sha10.013s
ok  crypto/sha2560.018s
ok  crypto/sha5120.016s
ok  crypto/subtle0.016s
ok  crypto/tls3.706s
ok  crypto/x5093.427s
?   crypto/x509/pkix[no test files]
ok  database/sql0.030s
ok  database/sql/driver0.020s
ok  debug/dwarf0.022s
ok  debug/elf0.024s
ok  debug/gosym0.022s
ok  debug/macho0.014s
ok  debug/pe0.017s
ok  encoding/ascii850.017s
ok  encoding/asn10.037s
ok  encoding/base320.020s
ok  encoding/base640.015s
ok  encoding/binary0.014s
ok  encoding/csv0.014s
ok  encoding/gob0.071s
ok  encoding/hex0.024s
ok  encoding/json0.028s
ok  encoding/pem0.025s
ok  encoding/xml0.029s
ok  errors0.021s
ok  expvar0.025s
ok  flag0.020s
ok  fmt0.066s
ok  go/ast0.018s
ok  go/build0.406s
ok  go/doc0.116s
ok  go/format0.028s
ok  go/parser0.049s
ok  go/printer0.808s
ok  go/scanner0.015s
ok  go/token0.042s
?   hash[no test files]
ok  hash/adler320.023s
ok  hash/crc320.013s
ok  hash/crc640.021s
ok  hash/fnv0.022s
ok  html0.021s
ok  html/template0.059s
ok  image0.138s
ok  image/color0.018s
ok  image/draw0.045s
ok  image/gif0.020s
ok  image/jpeg0.310s
ok  image/png0.053s
ok  index/suffixarray0.025s
ok  io0.035s
ok  io/ioutil0.030s
ok  log0.031s
ok  log/syslog2.038s
ok  math0.018s
ok  math/big0.851s
ok  math/cmplx0.013s
ok  math/rand0.037s
ok  mime0.014s
ok  mime/multipart0.653s
ok  net1.829s
ok  net/http5.688s
ok  net/http/cgi0.838s
ok  net/http/cookiejar0.031s
ok  net/http/fcgi0.026s
ok  net/http/httptest0.035s
ok  net/http/httputil0.038s
?   net/http/pprof[no test files]
ok  net/mail0.015s
ok  net/rpc0.069s
ok  net/rpc/jsonrpc0.047s
ok  net/smtp0.030s
ok  net/textproto0.016s
ok  net/url0.025s
ok  os0.790s
--- FAIL: TestPipeLookPathLeak (0.05 seconds)
exec_test.go:169: leaked 5 fds; want ~0
FAIL
FAILos/exec1.056s
ok  os/signal0.509s
ok  os/user0.016s
ok  path0.013s
ok  path/filepath0.443s
ok  reflect0.076s
ok  regexp0.108s
ok  regexp/syntax2.657s
ok  runtime14.006s
?   runtime/cgo[no test files]
ok  runtime/debug0.014s
ok  runtime/pprof1.242s
?   runtime/race[no test files]
ok  sort0.084s
ok  strconv1.702s
ok  strings0.388s
ok  sync0.090s
ok  sync/atomic0.037s
ok  syscall0.029s
ok  testing0.015s
?   testing/iotest[no test files]
ok  testing/quick0.056s
ok  text/scanner0.034s
ok  text/tabwriter0.022s
ok  text/template0.052s
ok  text/template/parse0.024s
ok  time2.693s
ok  unicode0.025s
ok  unicode/utf160.013s
ok  unicode/utf80.021s
?   unsafe[no test files]
Build complete, duration 4m36.466500668s. Result: error: exit status 1

&lt;/pre&gt;</description>
    <dc:creator>builder-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-19T00:39:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72453">
    <title>code review 10360049: go.tools.cmd/cover: define a block to end at the closin... (issue 10360049)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72453</link>
    <description>&lt;pre&gt;Reviewers: golang-dev1,

Message:
Hello golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org,

I'd like you to review this change to
https://code.google.com/p/go.tools


Description:
go.tools.cmd/cover: define a block to end at the closing brace rather
than last statement
Makes for prettier output, although the HTML generation is still not
quite right.

Please review this at https://codereview.appspot.com/10360049/

Affected files:
   M cmd/cover/cover.go
   M cmd/cover/html.go


Index: cmd/cover/cover.go
===================================================================
--- a/cmd/cover/cover.go
+++ b/cmd/cover/cover.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -132,7 +132,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  return f
  }
  }
-n.List = f.addCounters(n.Pos(), n.End(), n.List)
+n.List = f.addCounters(n.Lbrace, n.Rbrace+1, n.List) // +1 to go to  
point after closing brace.
  case *ast.SelectStmt:
  // Don't annotate an empty select - creates a syntax error.
  if n.Body == nil || len(n.Body.List) == 0 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -151,7 +151,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  func unquote(s string) string {
  t, err := strconv.Unquote(s)
  if err != nil {
-log.Fatal("cover: improperly quoted string %q\n", s)
+log.Fatalf("cover: improperly quoted string %q\n", s)
  }
  return t
  }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -338,16 +338,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  // Find first statement that affects flow of control (break, continue,  
if, etc.).
  // It will be the last statement of this basic block.
  var last int
-end = pos
+thisEnd := end
  for last = 0; last &amp;lt; len(list); last++ {
-end = f.statementBoundary(list[last])
+thisEnd = f.statementBoundary(list[last])
  if f.endsBasicSourceBlock(list[last]) {
  last++
  break
  }
  }
  if pos != end { // Can have no source to cover if e.g. blocks abut.
-newList = append(newList, f.newCounter(pos, end, last))
+newList = append(newList, f.newCounter(pos, thisEnd, last))
  }
  newList = append(newList, list[0:last]...)
  list = list[last:]
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -491,6 +491,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  start := f.fset.Position(block.startByte)
  end := f.fset.Position(block.endByte)
  fmt.Fprintf(w, "\t\t%d, %d, %#x, // %d\n", start.Line, end.Line,  
(end.Column&amp;amp;0xFFFF)&amp;lt;&amp;lt;16|(start.Column&amp;amp;0xFFFF), i)
+fmt.Fprintf(w, "// %s:#%d,#%d\n", f.name, block.startByte-1,  
block.endByte-1)
  }

  // Close the position array.
Index: cmd/cover/html.go
===================================================================
--- a/cmd/cover/html.go
+++ b/cmd/cover/html.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -74,7 +74,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;

  if outfile == "" {
  if !startBrowser("file://" + out.Name()) {
-fmt.Fprintln(os.Stderr, "HTML output written to %v", out.Name())
+fmt.Fprintf(os.Stderr, "HTML output written to %s\n", out.Name())
  }
  }



&lt;/pre&gt;</description>
    <dc:creator>r&lt; at &gt;golang.org</dc:creator>
    <dc:date>2013-06-18T23:02:44</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72442">
    <title>code review 10402044: go.tools/go/types: catch cycles in function declarations (issue 10402044)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72442</link>
    <description>&lt;pre&gt;Reviewers: adonovan,

Message:
Hello adonovan-hpIqsD4AKlfQT0dZR+AlfA&amp;lt; at &amp;gt;public.gmane.org (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go.tools


Description:
go.tools/go/types: catch cycles in function declarations

Fixes issue 5217.

Please review this at https://codereview.appspot.com/10402044/

Affected files:
   M go/types/resolver.go
   M go/types/testdata/decls0.src


Index: go/types/resolver.go
===================================================================
--- a/go/types/resolver.go
+++ b/go/types/resolver.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -347,7 +347,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  case *TypeName:
  check.declareType(obj, d.typ, cycleOk)
  case *Func:
-check.declareFunc(obj, cycleOk)
+check.declareFunc(obj)
  default:
  unreachable()
  }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -525,12 +525,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }
  }

-func (check *checker) declareFunc(obj *Func, cycleOk bool) {
+func (check *checker) declareFunc(obj *Func) {
  fdecl := obj.decl
  // methods are typechecked when their receivers are typechecked
  // TODO(gri) there is no reason to make this a special case: receivers  
are simply parameters
  if fdecl.Recv == nil {
-sig := check.typ(fdecl.Type, cycleOk).(*Signature)
+obj.typ = Typ[Invalid] // guard against cycles
+sig := check.typ(fdecl.Type, false).(*Signature)
  if obj.name == "init" &amp;amp;&amp;amp; (sig.params.Len() &amp;gt; 0 || sig.results.Len() &amp;gt; 0)  
{
  check.errorf(fdecl.Pos(), "func init must have no arguments and no  
return values")
  // ok to continue
Index: go/types/testdata/decls0.src
===================================================================
--- a/go/types/testdata/decls0.src
+++ b/go/types/testdata/decls0.src
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -186,6 +186,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  Last int
  )

+// cycles in function/method declarations
+// (test cases for issue 5217 and variants)
+func f1(x f1 /* ERROR "not a type" */ ) {}
+func f2(x *f2 /* ERROR "cannot indirect" */ ) {}
+func f3() (x f3 /* ERROR "not a type" */ ) { return }
+func f4() (x *f4 /* ERROR "cannot indirect" */ ) { return }
+
+func (S0) m1(x S0 /* ERROR "field or method" */ .m1) {}
+func (S0) m2(x *S0 /* ERROR "field or method" */ .m2) {}
+func (S0) m3() (x S0 /* ERROR "field or method" */ .m3) { return }
+func (S0) m4() (x *S0 /* ERROR "field or method" */ .m4) { return }
+
  // interfaces may have blank methods
  type BlankI interface {
  _()


&lt;/pre&gt;</description>
    <dc:creator>gri-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T22:25:38</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72439">
    <title>code review 10405044: google-api-go-client: update generated code with CL htt... (issue 10405044)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72439</link>
    <description>&lt;pre&gt;Reviewers: adg, bradfitz,

Message:
Hello adg-iFWiy5xATs8dnm+yROfE0A&amp;lt; at &amp;gt;public.gmane.org, bradfitz-iFWiy5xATs8dnm+yROfE0A&amp;lt; at &amp;gt;public.gmane.org (cc:
golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/google-api-go-client


Description:
google-api-go-client: update generated code with CL
https://codereview.appspot.com/10234052/

Please review this at https://codereview.appspot.com/10405044/

Affected files:
   M adexchangebuyer/v1.1/adexchangebuyer-api.json
   M adexchangebuyer/v1.1/adexchangebuyer-gen.go
   M adexchangebuyer/v1.2/adexchangebuyer-api.json
   M adexchangebuyer/v1.2/adexchangebuyer-gen.go
   M adexchangebuyer/v1/adexchangebuyer-api.json
   M adexchangebuyer/v1/adexchangebuyer-gen.go
   M adexchangeseller/v1/adexchangeseller-api.json
   M adexchangeseller/v1/adexchangeseller-gen.go
   A admin/directory_v1/admin-api.json
   A admin/directory_v1/admin-gen.go
   A admin/reports_v1/admin-api.json
   A admin/reports_v1/admin-gen.go
   M adsense/v1.1/adsense-api.json
   M adsense/v1.1/adsense-gen.go
   M adsense/v1.2/adsense-api.json
   M adsense/v1.2/adsense-gen.go
   A adsense/v1.3/adsense-api.json
   A adsense/v1.3/adsense-gen.go
   M adsense/v1/adsense-api.json
   M adsense/v1/adsense-gen.go
   M adsensehost/v4.1/adsensehost-api.json
   M adsensehost/v4.1/adsensehost-gen.go
   M analytics/v2.4/analytics-api.json
   M analytics/v2.4/analytics-gen.go
   M analytics/v3/analytics-api.json
   M analytics/v3/analytics-gen.go
   A androidpublisher/v1.1/androidpublisher-api.json
   A androidpublisher/v1.1/androidpublisher-gen.go
   M androidpublisher/v1/androidpublisher-api.json
   M androidpublisher/v1/androidpublisher-gen.go
   M audit/v1/audit-api.json
   M audit/v1/audit-gen.go
   M bigquery/v2/bigquery-api.json
   M bigquery/v2/bigquery-gen.go
   M blogger/v2/blogger-api.json
   M blogger/v2/blogger-gen.go
   M blogger/v3/blogger-api.json
   M blogger/v3/blogger-gen.go
   M books/v1/books-api.json
   M books/v1/books-gen.go
   M calendar/v3/calendar-api.json
   M calendar/v3/calendar-gen.go
   M civicinfo/us_v1/civicinfo-api.json
   M civicinfo/us_v1/civicinfo-gen.go
   M compute/v1beta14/compute-api.json
   M compute/v1beta14/compute-gen.go
   A compute/v1beta15/compute-api.json
   A compute/v1beta15/compute-gen.go
   M coordinate/v1/coordinate-api.json
   M coordinate/v1/coordinate-gen.go
   M customsearch/v1/customsearch-api.json
   M customsearch/v1/customsearch-gen.go
   A datastore/v1beta1/datastore-api.json
   A datastore/v1beta1/datastore-gen.go
   M dfareporting/v1.1/dfareporting-api.json
   M dfareporting/v1.1/dfareporting-gen.go
   A dfareporting/v1.2/dfareporting-api.json
   A dfareporting/v1.2/dfareporting-gen.go
   M dfareporting/v1/dfareporting-api.json
   M dfareporting/v1/dfareporting-gen.go
   M discovery/v1/discovery-api.json
   M discovery/v1/discovery-gen.go
   M drive/v1/drive-api.json
   M drive/v1/drive-gen.go
   M drive/v2/drive-api.json
   M drive/v2/drive-gen.go
   M freebase/v1/freebase-api.json
   M freebase/v1/freebase-gen.go
   M freebase/v1sandbox/freebase-api.json
   M freebase/v1sandbox/freebase-gen.go
   M gan/v1beta1/gan-api.json
   M gan/v1beta1/gan-gen.go
   M groupsmigration/v1/groupsmigration-api.json
   M groupsmigration/v1/groupsmigration-gen.go
   M groupssettings/v1/groupssettings-api.json
   M groupssettings/v1/groupssettings-gen.go
   M latitude/v1/latitude-api.json
   M latitude/v1/latitude-gen.go
   M licensing/v1/licensing-api.json
   M licensing/v1/licensing-gen.go
   M mirror/v1/mirror-api.json
   M mirror/v1/mirror-gen.go
   M oauth2/v1/oauth2-api.json
   M oauth2/v1/oauth2-gen.go
   M oauth2/v2/oauth2-api.json
   M oauth2/v2/oauth2-gen.go
   M orkut/v2/orkut-api.json
   M orkut/v2/orkut-gen.go
   M pagespeedonline/v1/pagespeedonline-api.json
   M pagespeedonline/v1/pagespeedonline-gen.go
   M plus/v1/plus-api.json
   M plus/v1/plus-gen.go
   M prediction/v1.2/prediction-api.json
   M prediction/v1.2/prediction-gen.go
   M prediction/v1.3/prediction-api.json
   M prediction/v1.3/prediction-gen.go
   M prediction/v1.4/prediction-api.json
   M prediction/v1.4/prediction-gen.go
   M prediction/v1.5/prediction-api.json
   M prediction/v1.5/prediction-gen.go
   M reseller/v1/reseller-api.json
   M reseller/v1/reseller-gen.go
   M reseller/v1sandbox/reseller-api.json
   M reseller/v1sandbox/reseller-gen.go
   M shopping/v1/shopping-api.json
   M shopping/v1/shopping-gen.go
   M siteverification/v1/siteverification-api.json
   M siteverification/v1/siteverification-gen.go
   A sqladmin/v1beta1/sqladmin-api.json
   A sqladmin/v1beta1/sqladmin-gen.go
   M storage/v1beta1/storage-api.json
   M storage/v1beta1/storage-gen.go
   M storage/v1beta2/storage-api.json
   M storage/v1beta2/storage-gen.go
   M taskqueue/v1beta1/taskqueue-api.json
   M taskqueue/v1beta1/taskqueue-gen.go
   M taskqueue/v1beta2/taskqueue-api.json
   M taskqueue/v1beta2/taskqueue-gen.go
   M tasks/v1/tasks-api.json
   M tasks/v1/tasks-gen.go
   M translate/v2/translate-api.json
   M translate/v2/translate-gen.go
   M urlshortener/v1/urlshortener-api.json
   M urlshortener/v1/urlshortener-gen.go
   M webfonts/v1/webfonts-api.json
   M webfonts/v1/webfonts-gen.go
   M youtube/v3/youtube-api.json
   M youtube/v3/youtube-gen.go
   M youtubeanalytics/v1/youtubeanalytics-api.json
   M youtubeanalytics/v1/youtubeanalytics-gen.go
   M youtubeanalytics/v1beta1/youtubeanalytics-api.json
   M youtubeanalytics/v1beta1/youtubeanalytics-gen.go


&lt;/pre&gt;</description>
    <dc:creator>campoy-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T22:11:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72435">
    <title>code review 10364044: cmd/go: simplify flags for coverage (issue 10364044)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72435</link>
    <description>&lt;pre&gt;Reviewers: rsc,

Message:
Hello rsc (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go


Description:
cmd/go: simplify flags for coverage
The single flag -cover provides the default simplest behavior.
The other flags, -covermode and -coverprofile, provide more
control. The three flags interconnect to work well.

Please review this at https://codereview.appspot.com/10364044/

Affected files:
   M src/cmd/go/doc.go
   M src/cmd/go/test.go
   M src/cmd/go/testflag.go
   M src/pkg/testing/testing.go


Index: src/cmd/go/doc.go
===================================================================
--- a/src/cmd/go/doc.go
+++ b/src/cmd/go/doc.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -738,17 +738,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
      if -test.blockprofile is set without this flag, all blocking events
      are recorded, equivalent to -test.blockprofilerate=1.

+-cover
+    Enable basic coverage analysis; shorthand for -covermode=set.
+    TODO: This feature is not yet fully implemented.
+
  -cover set,count,atomic
-    TODO: This feature is not yet fully implemented.
-    TODO: Must run with -v to see output.
-    TODO: Need control over output format,
      Set the mode for coverage analysis for the package[s] being tested.
-    The default is to do none.
+    The default is to do none, but if -cover or -coverprofile is  
specified,
+    coverage is enabled in "set" mode unless this flag is also specified.
      The values:
  set: boolean: does this statement execute?
  count: integer: how many times does this statement execute?
  atomic: integer: like count, but correct in multithreaded tests;
  significantly more expensive.
+    Sets -v. TODO: This will change.
+
+-coverprofile cover.out
+    Write a coverage profile to the specified file after all tests
+    have passed.

  -cpu 1,2,4
      Specify a list of GOMAXPROCS values for which the tests or
Index: src/cmd/go/test.go
===================================================================
--- a/src/cmd/go/test.go
+++ b/src/cmd/go/test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -124,10 +124,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
      if -test.blockprofile is set without this flag, all blocking events
      are recorded, equivalent to -test.blockprofilerate=1.

+-cover
+    Enable basic coverage analysis; shorthand for -covermode=set.
+    TODO: This feature is not yet fully implemented.
+
  -cover set,count,atomic
-    TODO: This feature is not yet fully implemented.
      Set the mode for coverage analysis for the package[s] being tested.
-    The default is to do none.
+    The default is to do none, but if -cover or -coverprofile is  
specified,
+    coverage is enabled in "set" mode unless this flag is also specified.
      The values:
  set: boolean: does this statement execute?
  count: integer: how many times does this statement execute?
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -254,7 +258,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;

  var (
  testC            bool     // -c flag
-testCover        string   // -cover flag
+testCover        bool     // -cover flag
+testCoverMode    string   // -covermode flag
  testProfile      bool     // some profiling flag
  testI            bool     // -i flag
  testV            bool     // -v flag
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -494,7 +499,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  // - that is, any code imported by the external test that in turn
  // imports p - needs to be rebuilt too. For now, just report
  // that coverage is unavailable.
-if testCover != "" &amp;amp;&amp;amp; contains(p1.Deps, p.ImportPath) {
+if testCover &amp;amp;&amp;amp; contains(p1.Deps, p.ImportPath) {
  return nil, nil, nil, fmt.Errorf("coverage analysis cannot handle  
package (%s_test imports %s imports %s)", p.Name, path, p.ImportPath)
  }
  }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -535,8 +540,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  return nil, nil, nil, err
  }

-if testCover != "" {
-p.coverMode = testCover
+if testCover {
+p.coverMode = testCoverMode
  p.coverVars = declareCoverVars(p.ImportPath, p.GoFiles...)
  }

&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -545,7 +550,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }

  // Test package.
-if len(p.TestGoFiles) &amp;gt; 0 || testCover != "" {
+if len(p.TestGoFiles) &amp;gt; 0 || testCover {
  ptest = new(Package)
  *ptest = *p
  ptest.GoFiles = nil
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -871,7 +876,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }

  func (t *testFuncs) CoverEnabled() bool {
-return testCover != ""
+return testCover
  }

  type testFunc struct {
Index: src/cmd/go/testflag.go
===================================================================
--- a/src/cmd/go/testflag.go
+++ b/src/cmd/go/testflag.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -27,7 +27,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
    -bench="": passes -test.bench to test
    -benchmem=false: print memory allocation statistics for benchmarks
    -benchtime=1s: passes -test.benchtime to test
-  -cover="": passes -test.cover to test
+  -cover=false: basic coverage; equivalent to -covermode=set
+  -covermode="": passes -test.covermode to test
    -coverprofile="": passes -test.coverprofile to test
    -cpu="": passes -test.cpu to test
    -cpuprofile="": passes -test.cpuprofile to test
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -65,6 +66,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  {name: "c", boolVar: &amp;amp;testC},
  {name: "file", multiOK: true},
  {name: "i", boolVar: &amp;amp;testI},
+{name: "cover", boolVar: &amp;amp;testCover},

  // build flags.
  {name: "a", boolVar: &amp;amp;buildA},
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -83,7 +85,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  {name: "bench", passToTest: true},
  {name: "benchmem", boolVar: new(bool), passToTest: true},
  {name: "benchtime", passToTest: true},
-{name: "cover", passToTest: true},
+{name: "covermode"}, // Passed to test by special arrangement.
  {name: "coverprofile", passToTest: true},
  {name: "cpu", passToTest: true},
  {name: "cpuprofile", passToTest: true},
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -144,7 +146,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  var err error
  switch f.name {
  // bool flags.
-case "a", "c", "i", "n", "x", "v", "work", "race":
+case "a", "c", "i", "n", "x", "v", "race", "cover", "work":
  setBoolFlag(f.boolVar, value)
  case "p":
  setIntFlag(&amp;amp;buildP, value)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -174,19 +176,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  testBench = true
  case "timeout":
  testTimeout = value
-case "blockprofile", "coverprofile", "cpuprofile", "memprofile":
+case "blockprofile", "cpuprofile", "memprofile":
+testProfile = true
+case "coverprofile":
+passToTest = setCoverMode("set", passToTest)
  testProfile = true
  case "outputdir":
  outputDir = value
-case "cover":
-switch value {
-case "set", "count", "atomic":
-testCover = value
-default:
-fatalf("invalid flag argument for -cover: %q", value)
-}
-// Guarantee we see the coverage statistics. Doesn't turn -v on  
generally; tricky. TODO?
-testV = true
+case "covermode":
+passToTest = setCoverMode(value, passToTest)
  }
  if extraWord {
  i++
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -195,6 +193,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  passToTest = append(passToTest, "-test."+f.name+"="+value)
  }
  }
+// -cover is shorthand for -covermode=set.
+if testCover &amp;amp;&amp;amp; testCoverMode == "" {
+passToTest = setCoverMode("set", passToTest)
+}
  // Tell the test what directory we're running in, so it can write the  
profiles there.
  if testProfile &amp;amp;&amp;amp; outputDir == "" {
  dir, err := os.Getwd()
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -206,6 +208,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  return
  }

+// setCoverMode sets the cover mode if not already specified; it captures  
the default behavior and
+// canonicalizes the coverage flags to pass to the test binary.
+func setCoverMode(mode string, passToTest []string) []string {
+if testCoverMode != "" {
+return passToTest
+}
+switch mode {
+case "set", "count", "atomic":
+testCoverMode = mode
+default:
+fatalf("invalid flag argument for -cover: %q", mode)
+}
+testCover = true
+// Guarantee we see the coverage statistics. Doesn't turn -v on  
generally; tricky. TODO?
+testV = true
+return append(passToTest, "-test.covermode", "set")
+}
+
  // testFlag sees if argument i is a known flag and returns its definition,  
value, and whether it consumed an extra word.
  func testFlag(args []string, i int) (f *testFlagSpec, value string, extra  
bool) {
  arg := args[i]
Index: src/pkg/testing/testing.go
===================================================================
--- a/src/pkg/testing/testing.go
+++ b/src/pkg/testing/testing.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -122,7 +122,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;

  // Report as tests are run; default is silent for success.
  chatty           = flag.Bool("test.v", false, "verbose: print additional  
output")
-cover            = flag.String("test.cover", "", "cover mode: set, count,  
atomic; default is none")
+coverMode        = flag.String("test.covermode", "", "cover mode: set,  
count, atomic; default is none")
  coverProfile     = flag.String("test.coverprofile", "", "write a  
coveraage profile to the named file after execution")
  match            = flag.String("test.run", "", "regular expression to  
select tests and examples to run")
  memProfile       = flag.String("test.memprofile", "", "write a memory  
profile to the named file after execution")
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -520,7 +520,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }
  f.Close()
  }
-if *cover != "" {
+if *coverMode != "" {
  coverReport()
  }
  }


&lt;/pre&gt;</description>
    <dc:creator>r&lt; at &gt;golang.org</dc:creator>
    <dc:date>2013-06-18T21:57:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72431">
    <title>code review 10391043: all: avoid leaking fds during tests (issue 10391043)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72431</link>
    <description>&lt;pre&gt;Reviewers: golang-dev1,

Message:
Hello golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org,

I'd like you to review this change to
https://code.google.com/p/go


Description:
all: avoid leaking fds during tests

trivial: it is not a serious problem to leak a fd in a short lived
process, but it was obscuring my investigation of issue 5593.

Please review this at https://codereview.appspot.com/10391043/

Affected files:
   M src/pkg/archive/tar/reader_test.go
   M src/pkg/archive/zip/reader_test.go
   M src/pkg/debug/elf/file_test.go
   M src/pkg/log/syslog/syslog_test.go
   M src/pkg/net/net_test.go
   M src/pkg/net/parse_test.go
   M src/pkg/os/os_test.go


Index: src/pkg/archive/tar/reader_test.go
===================================================================
--- a/src/pkg/archive/tar/reader_test.go
+++ b/src/pkg/archive/tar/reader_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -171,6 +171,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  t.Errorf("test %d: Unexpected error: %v", i, err)
  continue
  }
+defer f.Close()
  tr := NewReader(f)
  for j, header := range test.headers {
  hdr, err := tr.Next()
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -191,7 +192,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if hdr != nil || err != nil {
  t.Errorf("test %d: Unexpected entry or error: hdr=%v err=%v", i, hdr,  
err)
  }
-f.Close()
  }
  }

Index: src/pkg/archive/zip/reader_test.go
===================================================================
--- a/src/pkg/archive/zip/reader_test.go
+++ b/src/pkg/archive/zip/reader_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -276,6 +276,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  var rc *ReadCloser
  rc, err = OpenReader(filepath.Join("testdata", zt.Name))
  if err == nil {
+defer rc.Close()
  z = &amp;amp;rc.Reader
  }
  }
Index: src/pkg/debug/elf/file_test.go
===================================================================
--- a/src/pkg/debug/elf/file_test.go
+++ b/src/pkg/debug/elf/file_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -166,6 +166,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  } else {
  f, err = Open(tt.file)
  }
+defer f.Close()
  if err != nil {
  t.Errorf("cannot open file %s: %v", tt.file, err)
  continue
Index: src/pkg/log/syslog/syslog_test.go
===================================================================
--- a/src/pkg/log/syslog/syslog_test.go
+++ b/src/pkg/log/syslog/syslog_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -255,6 +255,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if err != nil {
  t.Fatalf("syslog.Dial() failed: %v", err)
  }
+defer l.Close()
  _, err = io.WriteString(l, test.msg)
  if err != nil {
  t.Fatalf("WriteString() failed: %v", err)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -328,6 +329,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if err != nil {
  t.Fatalf("syslog.Dial() failed: %v", err)
  }
+defer w.Close()
  for i := 0; i &amp;lt; M; i++ {
  err := w.Info("test")
  if err != nil {
Index: src/pkg/net/net_test.go
===================================================================
--- a/src/pkg/net/net_test.go
+++ b/src/pkg/net/net_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -25,6 +25,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }

  go func() {
+defer ln.Close()
  c, err := ln.Accept()
  if err != nil {
  t.Fatalf("Accept: %v", err)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -75,7 +76,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if err != nil {
  t.Fatalf("ListenUnix on %s: %s", tmpname, err)
  }
-defer os.Remove(tmpname)
+defer func() {
+ln.Close()
+os.Remove(tmpname)
+}()

  go func() {
  c, err := ln.Accept()
Index: src/pkg/net/parse_test.go
===================================================================
--- a/src/pkg/net/parse_test.go
+++ b/src/pkg/net/parse_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,12 +23,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if err != nil {
  t.Fatalf("open %s: %v", filename, err)
  }
+defer fd.Close()
  br := bufio.NewReader(fd)

  file, err := open(filename)
  if file == nil {
  t.Fatalf("net.open(%s) = nil", filename)
  }
+defer file.close()

  lineno := 1
  byteno := 0
Index: src/pkg/os/os_test.go
===================================================================
--- a/src/pkg/os/os_test.go
+++ b/src/pkg/os/os_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -299,6 +299,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if err2 != nil {
  t.Fatalf("open %q failed: %v", dir, err2)
  }
+defer file1.Close()
  small := smallReaddirnames(file1, len(all)+100, t) // +100 in case we  
screw up
  if len(small) &amp;lt; len(all) {
  t.Fatalf("len(small) is %d, less than %d", len(small), len(all))
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -526,6 +527,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if err != nil {
  t.Fatalf("Pipe: %v", err)
  }
+defer r.Close()
  attr := &amp;amp;ProcAttr{Dir: dir, Files: []*File{nil, w, Stderr}}
  p, err := StartProcess(cmd, args, attr)
  if err != nil {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -844,6 +846,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  if err != nil {
  t.Fatal(err)
  }
+defer r.Close()
  p, err := StartProcess("/bin/hostname", []string{"hostname"},  
&amp;amp;ProcAttr{Files: []*File{nil, w, Stderr}})
  if err != nil {
  t.Fatal(err)


&lt;/pre&gt;</description>
    <dc:creator>dave-7L4Cwp9BzA+sTnJN9+BGXg&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T21:49:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72429">
    <title>all: OpenBSD/ARM port. (issue 10399043)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72429</link>
    <description>&lt;pre&gt;I thnk the change to test/nilptr.go should be its own CL.

https://codereview.appspot.com/10399043/

&lt;/pre&gt;</description>
    <dc:creator>dave-7L4Cwp9BzA+sTnJN9+BGXg&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T21:18:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72423">
    <title>code review 10376044: go.tools/cmd/vet: set the package name unconditionally (issue 10376044)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72423</link>
    <description>&lt;pre&gt;Reviewers: gri,

Message:
Hello gri (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go.tools


Description:
go.tools/cmd/vet: set the package name unconditionally
A better fix than the one in CL 10400044

Please review this at https://codereview.appspot.com/10376044/

Affected files:
   M cmd/vet/main.go


Index: cmd/vet/main.go
===================================================================
--- a/cmd/vet/main.go
+++ b/cmd/vet/main.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -220,11 +220,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  files = append(files, &amp;amp;File{fset: fs, content: data, name: name, file:  
parsedFile})
  }
  pkg := new(Package)
-if directory == "." {
-// Special case: Use the base name so we don't see "." as the package  
name in messages.
-directory = filepath.Base(filepath.Dir(names[0]))
-}
-pkg.path = directory
+pkg.path = astFiles[0].Name.Name
  pkg.files = files
  // Type check the package.
  err := pkg.check(fs, astFiles)


&lt;/pre&gt;</description>
    <dc:creator>r&lt; at &gt;golang.org</dc:creator>
    <dc:date>2013-06-18T21:05:55</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72420">
    <title>code review 10368048: math/big: fix Errorf verb (issue 10368048)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72420</link>
    <description>&lt;pre&gt;Reviewers: r,

Message:
Hello r (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go


Description:
math/big: fix Errorf verb

Pointed out by go vet.

Please review this at https://codereview.appspot.com/10368048/

Affected files:
   M src/pkg/math/big/nat_test.go


Index: src/pkg/math/big/nat_test.go
===================================================================
--- a/src/pkg/math/big/nat_test.go
+++ b/src/pkg/math/big/nat_test.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -685,7 +685,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;

  r := in.abs.modW(d.abs[0])
  if r != out.abs[0] {
-t.Errorf("#%d failed: got %s want %s", i, r, out)
+t.Errorf("#%d failed: got %d want %s", i, r, out)
  }
  }
  }


&lt;/pre&gt;</description>
    <dc:creator>gri-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T21:01:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72419">
    <title>code review 10368047: go.tools/go/types: don't print "..T" for named types wh... (issue 10368047)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72419</link>
    <description>&lt;pre&gt;Reviewers: adonovan,

Message:
Hello adonovan (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go.tools


Description:
go.tools/go/types: don't print "..T" for named types when calling
go/types with "." as path

Please review this at https://codereview.appspot.com/10368047/

Affected files:
   M go/types/errors.go


Index: go/types/errors.go
===================================================================
--- a/go/types/errors.go
+++ b/go/types/errors.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -320,9 +320,19 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  case *Named:
  s := "&amp;lt;Named w/o object&amp;gt;"
  if obj := t.obj; obj != nil {
-if obj.pkg != nil &amp;amp;&amp;amp; obj.pkg.path != "" {
-buf.WriteString(obj.pkg.path)
-buf.WriteString(".")
+if pkg := obj.pkg; pkg != nil {
+p := ""
+if path := pkg.path; path == "." {
+if pkg.name != "" {
+p = pkg.name
+}
+} else {
+p = path
+}
+if p != "" {
+buf.WriteString(p)
+buf.WriteByte('.')
+}
  }
  s = t.obj.name
  }


&lt;/pre&gt;</description>
    <dc:creator>gri-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T20:59:09</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72416">
    <title>code review 10400044: go.tools/cmd/vet: use directory for pkg.path if path is "." (issue 10400044)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72416</link>
    <description>&lt;pre&gt;Reviewers: gri,

Message:
Hello gri (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go.tools


Description:
go.tools/cmd/vet: use directory for pkg.path if path is "."
Before:
         math/big/nat_test.go:688: arg r for printf verb %s of wrong
type: ..Word
After:
         math/big/nat_test.go:688: arg r for printf verb %s of wrong
type: big.Word

Please review this at https://codereview.appspot.com/10400044/

Affected files:
   M cmd/vet/main.go


Index: cmd/vet/main.go
===================================================================
--- a/cmd/vet/main.go
+++ b/cmd/vet/main.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -220,6 +220,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  files = append(files, &amp;amp;File{fset: fs, content: data, name: name, file:  
parsedFile})
  }
  pkg := new(Package)
+if directory == "." {
+// Special case: Use the base name so we don't see "." as the package  
name in messages.
+directory = filepath.Base(filepath.Dir(names[0]))
+}
  pkg.path = directory
  pkg.files = files
  // Type check the package.


&lt;/pre&gt;</description>
    <dc:creator>r&lt; at &gt;golang.org</dc:creator>
    <dc:date>2013-06-18T20:55:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72400">
    <title>code review 10372045: crypto/tls: change advertised ciphersuite order. (issue 10372045)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72400</link>
    <description>&lt;pre&gt;Reviewers: golang-dev1,

Message:
Hello golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go/


Description:
crypto/tls: change advertised ciphersuite order.

TLS clients send ciphersuites in preference order (most prefereable
first). This change alters the order so that ECDHE comes before plain
RSA, and RC4 comes before AES (because of the Lucky13 attack).

This is unlikely to have much effect: as a server, the code uses the
client's ciphersuite order by default and, as a client, the non-Go
server probably imposes its order.

Please review this at https://codereview.appspot.com/10372045/

Affected files:
   M src/pkg/crypto/tls/cipher_suites.go


Index: src/pkg/crypto/tls/cipher_suites.go
===================================================================
--- a/src/pkg/crypto/tls/cipher_suites.go
+++ b/src/pkg/crypto/tls/cipher_suites.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -52,14 +52,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }

  var cipherSuites = []*cipherSuite{
+{TLS_ECDHE_RSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheRSAKA, true, cipherRC4,  
macSHA1},
+{TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheRSAKA, true,  
cipherAES, macSHA1},
+{TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheRSAKA, true,  
cipherAES, macSHA1},
  {TLS_RSA_WITH_RC4_128_SHA, 16, 20, 0, rsaKA, false, cipherRC4, macSHA1},
-{TLS_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, rsaKA, false, cipher3DES,  
macSHA1},
  {TLS_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, rsaKA, false, cipherAES,  
macSHA1},
  {TLS_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, rsaKA, false, cipherAES,  
macSHA1},
-{TLS_ECDHE_RSA_WITH_RC4_128_SHA, 16, 20, 0, ecdheRSAKA, true, cipherRC4,  
macSHA1},
  {TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, ecdheRSAKA, true,  
cipher3DES, macSHA1},
-{TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, 16, 20, 16, ecdheRSAKA, true,  
cipherAES, macSHA1},
-{TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, 32, 20, 16, ecdheRSAKA, true,  
cipherAES, macSHA1},
+{TLS_RSA_WITH_3DES_EDE_CBC_SHA, 24, 20, 8, rsaKA, false, cipher3DES,  
macSHA1},
  }

  func cipherRC4(key, iv []byte, isRead bool) interface{} {


&lt;/pre&gt;</description>
    <dc:creator>agl-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T18:02:04</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72398">
    <title>code review 10402043: go.crypto/ocsp: allow cert-less responses and support m... (issue 10402043)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72398</link>
    <description>&lt;pre&gt;Reviewers: golang-dev1,

Message:
Hello golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go.crypto/


Description:
go.crypto/ocsp: allow cert-less responses and support making requests.

Some OCSP responses (notably COMODO's) don't use an intermediate
certificate to sign OCSP responses so this change allowed that.

Additionally, a CreateRequest function is added for creating OCSP
requests.

This change makes one API change: SerialNumber becomes a *big.Int to
match crypto/x509. The original code dates to before encoding/asn1
could cope with big.Ints and using a []byte was a workaround for that.

Please review this at https://codereview.appspot.com/10402043/

Affected files:
   M ocsp/ocsp.go
   M ocsp/ocsp_test.go


&lt;/pre&gt;</description>
    <dc:creator>agl-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T17:46:55</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72396">
    <title>cmd/cgo: fix line number (issue 6498055)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72396</link>
    <description>&lt;pre&gt;Is this still alive?


https://codereview.appspot.com/6498055/

&lt;/pre&gt;</description>
    <dc:creator>r&lt; at &gt;golang.org</dc:creator>
    <dc:date>2013-06-18T17:38:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72391">
    <title>code review 10370046: go.crypto/ssh/test: run sshd on a localhost port with a (issue 10370046)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72391</link>
    <description>&lt;pre&gt;Reviewers: agl1, dfc,

Message:
Hello agl-iFWiy5xATs8dnm+yROfE0A&amp;lt; at &amp;gt;public.gmane.org, dave-7L4Cwp9BzA+sTnJN9+BGXg&amp;lt; at &amp;gt;public.gmane.org (cc: golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org),

I'd like you to review this change to
https://code.google.com/p/go.crypto


Description:
go.crypto/ssh/test: run sshd on a localhost port with a
generated key.

This obviates the mocked out connection.

Please review this at https://codereview.appspot.com/10370046/

Affected files:
   M ssh/test/keys_test.go
   M ssh/test/test_unix_test.go


&lt;/pre&gt;</description>
    <dc:creator>hanwen-hpIqsD4AKlfQT0dZR+AlfA&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T17:04:57</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72384">
    <title>windows-386-ec2 broken by os/exec: make exec_test.go:TestExtraFilesFDShuffle portable.</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72384</link>
    <description>&lt;pre&gt;Change 600c5389c9d3 broke the windows-386-ec2 build:
http://build.golang.org/log/2b2cdcf03f6cf3b7e90d321fea2af5136291f91a

os/exec: make exec_test.go:TestExtraFilesFDShuffle portable.

R=golang-dev, minux.ma
CC=golang-dev
https://codereview.appspot.com/9103045

Committer: Brad Fitzpatrick &amp;lt;bradfitz-iFWiy5xATs8dnm+yROfE0A&amp;lt; at &amp;gt;public.gmane.org&amp;gt;

http://code.google.com/p/go/source/detail?r=600c5389c9d3

$ tail -200 &amp;lt; log
os/signal
cmd/go
archive/zip
encoding/gob
expvar
html
index/suffixarray
html/template
runtime/pprof
net/http/pprof
text/scanner
cmd/godoc
cmd/gofmt
cmd/yacc
archive/tar
compress/bzip2
compress/lzw
hash/adler32
compress/zlib
container/list
container/ring
crypto/sha512
database/sql/driver
database/sql
debug/gosym
encoding/ascii85
encoding/base32
encoding/csv
hash/crc64
hash/fnv
image/color
image
image/draw
image/gif
image/jpeg
image/png
log/syslog
math/cmplx
net/http/cgi
net/http/cookiejar
net/http/fcgi
net/http/httptest
net/http/httputil
net/mail
net/rpc
net/rpc/jsonrpc
net/smtp
os/user
runtime/cgo
runtime/debug
runtime/race
testing
testing/iotest
testing/quick


# Testing packages.
ok  cmd/api0.423s
?   cmd/cgo[no test files]
ok  cmd/fix0.439s
ok  cmd/go1.614s
?   cmd/godoc[no test files]
ok  cmd/gofmt0.597s
?   cmd/yacc[no test files]
ok  archive/tar0.226s
ok  archive/zip0.576s
ok  bufio0.651s
ok  bytes0.494s
ok  compress/bzip20.256s
ok  compress/flate1.644s
ok  compress/gzip0.220s
ok  compress/lzw0.383s
ok  compress/zlib3.008s
ok  container/heap0.030s
ok  container/list0.149s
ok  container/ring0.163s
?   crypto[no test files]
ok  crypto/aes0.851s
ok  crypto/cipher0.239s
ok  crypto/des0.362s
ok  crypto/dsa1.297s
ok  crypto/ecdsa1.135s
ok  crypto/elliptic0.736s
ok  crypto/hmac0.231s
ok  crypto/md50.032s
ok  crypto/rand0.808s
ok  crypto/rc40.516s
ok  crypto/rsa1.219s
ok  crypto/sha10.718s
ok  crypto/sha2560.677s
ok  crypto/sha5120.601s
ok  crypto/subtle0.545s
ok  crypto/tls5.754s
ok  crypto/x5093.106s
?   crypto/x509/pkix[no test files]
ok  database/sql0.128s
ok  database/sql/driver0.088s
ok  debug/dwarf0.222s
ok  debug/elf0.070s
ok  debug/gosym0.300s
ok  debug/macho0.165s
ok  debug/pe0.200s
ok  encoding/ascii850.032s
ok  encoding/asn10.197s
ok  encoding/base320.198s
ok  encoding/base640.182s
ok  encoding/binary0.160s
ok  encoding/csv0.129s
ok  encoding/gob0.332s
ok  encoding/hex0.490s
ok  encoding/json0.415s
ok  encoding/pem0.970s
ok  encoding/xml1.485s
ok  errors0.110s
ok  expvar0.631s
ok  flag0.301s
ok  fmt1.515s
ok  go/ast0.302s
ok  go/build0.969s
ok  go/doc0.265s
ok  go/format0.191s
ok  go/parser0.209s
ok  go/printer0.906s
ok  go/scanner0.103s
ok  go/token0.076s
?   hash[no test files]
ok  hash/adler320.127s
ok  hash/crc320.156s
ok  hash/crc640.163s
ok  hash/fnv0.181s
ok  html0.187s
ok  html/template0.165s
ok  image0.602s
ok  image/color0.584s
ok  image/draw0.518s
ok  image/gif0.563s
ok  image/jpeg1.041s
ok  image/png0.718s
ok  index/suffixarray0.683s
ok  io0.066s
ok  io/ioutil0.087s
ok  log0.382s
?   log/syslog[no test files]
ok  math0.332s
ok  math/big1.299s
ok  math/cmplx0.526s
ok  math/rand0.722s
ok  mime0.764s
ok  mime/multipart2.565s
--- FAIL: TestTimeoutTCP (1.30 seconds)
timeout_test.go:231: Read("tcp", "127.0.0.1:65211") took over 1 second,  
expected 0.1s
FAIL
FAILnet6.403s
ok  net/http6.619s
ok  net/http/cgi0.597s
ok  net/http/cookiejar0.402s
ok  net/http/fcgi1.064s
ok  net/http/httptest0.713s
ok  net/http/httputil0.265s
?   net/http/pprof[no test files]
ok  net/mail0.037s
ok  net/rpc0.271s
ok  net/rpc/jsonrpc0.090s
ok  net/smtp0.381s
ok  net/textproto0.137s
ok  net/url0.165s
ok  os1.749s
ok  os/exec0.511s
ok  os/signal2.327s
ok  os/user0.343s
ok  path0.455s
ok  path/filepath4.397s
ok  reflect0.836s
ok  regexp0.950s
ok  regexp/syntax4.265s
ok  runtime55.616s
?   runtime/cgo[no test files]
ok  runtime/debug1.323s
ok  runtime/pprof1.530s
?   runtime/race[no test files]
ok  sort0.088s
ok  strconv1.845s
ok  strings0.314s
ok  sync0.621s
ok  sync/atomic0.236s
ok  syscall0.241s
ok  testing0.050s
?   testing/iotest[no test files]
ok  testing/quick0.965s
ok  text/scanner0.163s
ok  text/tabwriter1.393s
ok  text/template0.306s
ok  text/template/parse0.220s
ok  time7.591s
ok  unicode0.427s
ok  unicode/utf161.392s
ok  unicode/utf80.513s
?   unsafe[no test files]
Build complete, duration 14m37.088s. Result: error: exit status 1

&lt;/pre&gt;</description>
    <dc:creator>builder-iFWiy5xATs8dnm+yROfE0A&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T16:13:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72375">
    <title>Parallel programming failure</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72375</link>
    <description>&lt;pre&gt;I've just coded a simple monte-carlo pi calculation:
http://play.golang.org/p/I4FOjPT7WC

It non-deterministically fails to scale, e.g. with GOMAXPROCS=4
sometimes it loads only 2 CPUs, sometimes 3 and sometimes 4.

Turns out it hits both
https://code.google.com/p/go/issues/detail?id=5586
where runtime fails to create enough threads and
GC/stoptheworld fiasco when a goroutine requests GC and waits for all
other calculations to finish:
gc2(2): 0+0+3216 ms

Until we fix both, parallel programming with Go is problematic.

&lt;/pre&gt;</description>
    <dc:creator>Dmitry Vyukov</dc:creator>
    <dc:date>2013-06-18T14:50:58</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lang.go.devel/72370">
    <title>code review 10386043: cmd/cgo: avoid leaking fds (issue 10386043)</title>
    <link>http://comments.gmane.org/gmane.comp.lang.go.devel/72370</link>
    <description>&lt;pre&gt;Reviewers: golang-dev1,

Message:
Hello golang-dev-/JYPxA39Uh5TLH3MbocFFw&amp;lt; at &amp;gt;public.gmane.org,

I'd like you to review this change to
https://code.google.com/p/go


Description:
cmd/cgo: avoid leaking fds

Fixes issue 5714.

Please review this at https://codereview.appspot.com/10386043/

Affected files:
   M src/cmd/cgo/gcc.go


Index: src/cmd/cgo/gcc.go
===================================================================
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -716,6 +716,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  runGcc(stdin, p.gccCmd())

  if f, err := macho.Open(gccTmp()); err == nil {
+defer f.Close()
  d, err := f.DWARF()
  if err != nil {
  fatalf("cannot load DWARF output from %s: %v", gccTmp(), err)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -742,6 +743,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }

  if f, err := elf.Open(gccTmp()); err == nil {
+defer f.Close()
  d, err := f.DWARF()
  if err != nil {
  fatalf("cannot load DWARF output from %s: %v", gccTmp(), err)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -768,6 +770,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
  }

  if f, err := pe.Open(gccTmp()); err == nil {
+defer f.Close()
  d, err := f.DWARF()
  if err != nil {
  fatalf("cannot load DWARF output from %s: %v", gccTmp(), err)


&lt;/pre&gt;</description>
    <dc:creator>dave-7L4Cwp9BzA+sTnJN9+BGXg&lt; at &gt;public.gmane.org</dc:creator>
    <dc:date>2013-06-18T12:19:01</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lang.go.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lang.go.devel</link>
  </textinput>
</rdf:RDF>
