1. 10 Feb, 2017 8 commits
    • Daniel Theophanes's avatar
      database/sql: ensure driverConns are closed if not returned to pool · a335c344
      Daniel Theophanes authored
      Previously if a connection was requested but timed out during the
      request and when acquiring the db.Lock the connection request
      is fulfilled and the request is unable to be returned to the
      connection pool, then then driver connection would not be closed.
      
      No tests were added or modified because I was unable to determine
      how to trigger this situation without something invasive.
      
      Change-Id: I9d4dc680e3fdcf63d79d212174a5b8b313f363f1
      Reviewed-on: https://go-review.googlesource.com/36641Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      a335c344
    • Russ Cox's avatar
      runtime/pprof: merge internal/protopprof into pprof package · 9a754439
      Russ Cox authored
      These are very tightly coupled, and internal/protopprof is small.
      There's no point to having a separate package.
      
      Change-Id: I2c8aa49c9e18a7128657bf2b05323860151b5606
      Reviewed-on: https://go-review.googlesource.com/36711
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9a754439
    • Nigel Tao's avatar
      image: fix the overlap check in Rectangle.Intersect. · 3a209281
      Nigel Tao authored
      This is a re-roll of a previous commit,
      a855da29, which was rolled back in
      14347ee4.
      
      It was rolled back because it broke a unit test in image/gif. The
      image/gif code was fixed by 9ef65dbe
      "image/gif: fix frame-inside-image bounds checking".
      
      The original commit message:
      
      image: fix the overlap check in Rectangle.Intersect.
      
      The doc comment for Rectangle.Intersect clearly states, "If the two
      rectangles do not overlap then the zero rectangle will be returned."
      Prior to this fix, calling Intersect on adjacent but non-overlapping
      rectangles would return an empty but non-zero rectangle.
      
      The fix essentially changes
      if r.Min.X > r.Max.X || r.Min.Y > r.Max.Y { etc }
      to
      if r.Min.X >= r.Max.X || r.Min.Y >= r.Max.Y { etc }
      (note that the > signs have become >= signs), but changing that line to:
      if r.Empty() { etc }
      seems clearer (and equivalent).
      
      Change-Id: I2e3af1f1686064a573b2e513b39246fe60c03631
      Reviewed-on: https://go-review.googlesource.com/36734Reviewed-by: 's avatarRob Pike <r@golang.org>
      Run-TryBot: Nigel Tao <nigeltao@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      3a209281
    • Josh Bleecher Snyder's avatar
      cmd/compile: use constants directly for fast map access calls · 5faba305
      Josh Bleecher Snyder authored
      CL 35554 taught order.go to use static variables
      for constants that needed to be addressable for runtime routines.
      However, there is one class of runtime routines that
      do not actually need an addressable value: fast map access routines.
      This CL teaches order.go to avoid using static variables
      for addressability in those cases.
      Instead, it avoids introducing a temp at all,
      which the backend would just have to optimize away.
      
      Fixes #19015.
      
      Change-Id: I5ef780c604fac3fb48dabb23a344435e283cb832
      Reviewed-on: https://go-review.googlesource.com/36693Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      5faba305
    • Nigel Tao's avatar
      image/gif: fix frame-inside-image bounds checking. · 9ef65dbe
      Nigel Tao authored
      The semantics of the Go image.Rectangle type is that the In and
      Intersects methods treat empty rectangles specially. There are multiple
      valid representations of an empty image.Rectangle. One of them is the
      zero image.Rectangle but there are others. They're obviously not all
      equal in the == sense, so we shouldn't use != to check GIF's semantics.
      
      This change will allow us to re-roll
      a855da29 "image: fix the overlap check
      in Rectangle.Intersect" which was rolled back in
      14347ee4.
      
      Change-Id: Ie1a0d092510a7bb6170e61adbf334b21361ff9e6
      Reviewed-on: https://go-review.googlesource.com/36639
      Run-TryBot: Nigel Tao <nigeltao@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      9ef65dbe
    • Nathan Caza's avatar
      net/http: improve handling of errors in Dir.Open · ee60d39a
      Nathan Caza authored
      The current implementation fails to produce an "IsNotExist" error on some
      platforms (unix) for certain situations where it would be expected. This causes
      downstream consumers, like FileServer, to emit 500 errors instead of a 404 for
      some non-existant paths on certain platforms but not others.
      
      As an example, os.Open("/index.html/foo") on a unix-type system will return
      syscall.ENOTDIR, which os.IsNotExist cannot return true for (because the
      error code is ambiguous without context). On windows, this same example
      would result in os.IsNotExist returning true -- since the returned error is
      specific.
      
      This change alters Dir.Open to look up the tree for an "IsPermission" or
      "IsNotExist" error to return, or a non-directory, returning os.ErrNotExist in
      the last case. For all other error scenarios, the original error is returned.
      This ensures that downstream code, like FileServer, receive errors that behave
      the same across all platforms.
      
      Fixes #18984
      
      Change-Id: Id7d16591c24cd96afddb6d8ae135ac78da42ed37
      Reviewed-on: https://go-review.googlesource.com/36635Reviewed-by: 's avatarYasuhiro MATSUMOTO <mattn.jp@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      ee60d39a
    • Robert Griesemer's avatar
      spec: refer to "not defined type" rather than "unnamed type" in conversions · 866f63e8
      Robert Griesemer authored
      We missed this in https://golang.org/cl/36213.
      Thanks to Chris Hines for pointing it out.
      
      For #18130.
      
      Change-Id: I6279ab19966c4391c4b4458b21fd2527d3f949dd
      Reviewed-on: https://go-review.googlesource.com/36691Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      866f63e8
    • Robert Griesemer's avatar
      cmd/compile/internal/syntax: removed gcCompat code needed to pass orig. tests · 3fd3171c
      Robert Griesemer authored
      The gcCompat mode was introduced to match the new parser's node position
      setup exactly with the positions used by the original parser. Some of the
      gcCompat adjustments were required to satisfy syntax error test cases,
      and the rest were required to make toolstash cmp pass.
      
      This change removes the former gcCompat adjustments and instead adjusts
      the respective test cases as necessary. In some cases this makes the error
      lines consistent with the ones reported by gccgo.
      
      Where it has changed, the position associated with a given syntactic construct
      is the position (line/col number) of the left-most token belonging to the
      construct.
      
      Change-Id: I5b60c00c5999a895c4d6d6e9b383c6405ccf725c
      Reviewed-on: https://go-review.googlesource.com/36695
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      3fd3171c
  2. 09 Feb, 2017 25 commits
  3. 08 Feb, 2017 7 commits
    • Ian Lance Taylor's avatar
      net: merge FreeBSD and DragonFly sendfile support · 27520cc4
      Ian Lance Taylor authored
      The two files were identical except for comments.
      
      Change-Id: Ifc300026c8e4584afa50a7b669099eaff146ea5d
      Reviewed-on: https://go-review.googlesource.com/36631
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      27520cc4
    • David du Colombier's avatar
      cmd/gofmt: fix diff on Plan 9 · 12991a75
      David du Colombier authored
      On Plan 9, GNU diff is called ape/diff.
      
      Fixes #18999.
      
      Change-Id: I7cf6c23c97bcc47172bbf838fd9dd72aefa4c18b
      Reviewed-on: https://go-review.googlesource.com/36650Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      12991a75
    • Dmitri Shuralyov's avatar
      net/http: don't modify Request in StripPrefix · af59742d
      Dmitri Shuralyov authored
      As of https://golang.org/cl/21530, rules are updated to state
      that Handlers shouldn't modify the provided Request. This change
      updates StripPrefix to follow that rule.
      
      Resolves #18952.
      
      Change-Id: I29bbb580722e871131fa75a97e6e038ec64fdfcd
      Reviewed-on: https://go-review.googlesource.com/36483Reviewed-by: 's avatarMatt Layher <mdlayher@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Matt Layher <mdlayher@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      af59742d
    • Cherry Zhang's avatar
      cmd/compile: handle DOT STRUCTLIT for zero-valued struct in SSA · a146dd3a
      Cherry Zhang authored
      CL 35261 makes SSA handle zero-valued STRUCTLIT, but DOT operation
      was not handled.
      
      Fixes #18994.
      
      Change-Id: Ic7976036acca1523b0b14afac4d170797e8aee20
      Reviewed-on: https://go-review.googlesource.com/36565
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a146dd3a
    • David Lazar's avatar
      cmd/compile: include linknames in export data · e3efdffa
      David Lazar authored
      This lets the compiler inline functions that contain a linknamed symbol.
      Previously, the net/http tests would fail to build with -l=4 because
      the compiler inlined functions that call net.byteIndex (which is
      linknamed to strings.IndexByte).
      
      This changes only the compiler-specific export data, so we don't need to
      bump the export format version number.
      
      The following benchmark results show how the size of package export data
      is impacted by this change. These benchmarks were created by compiling
      the go1 benchmark and running `go tool pack x` to extract the export
      data from the resulting .a files.
      
      name                                          old bytes   new bytes   delta
      bufio                                        3.48k ± 0%  3.58k ± 0%  +2.90%
      bytes                                        5.05k ± 0%  5.16k ± 0%  +2.16%
      compress/bzip2                               2.61k ± 0%  2.68k ± 0%  +2.68%
      compress/flate                               5.07k ± 0%  5.14k ± 0%  +1.40%
      compress/gzip                                8.26k ± 0%  8.40k ± 0%  +1.70%
      container/list                               1.69k ± 0%  1.76k ± 0%  +4.07%
      context                                      3.93k ± 0%  4.01k ± 0%  +1.86%
      crypto                                       1.03k ± 0%  1.03k ± 0%  +0.39%
      crypto/aes                                     475 ± 0%    475 ± 0%  +0.00%
      crypto/cipher                                1.18k ± 0%  1.18k ± 0%  +0.00%
      crypto/des                                     502 ± 0%    502 ± 0%  +0.00%
      crypto/dsa                                   5.71k ± 0%  5.77k ± 0%  +1.16%
      crypto/ecdsa                                 6.67k ± 0%  6.75k ± 0%  +1.08%
      crypto/elliptic                              6.28k ± 0%  6.35k ± 0%  +1.07%
      crypto/hmac                                    464 ± 0%    464 ± 0%  +0.00%
      crypto/internal/cipherhw                       313 ± 0%    313 ± 0%  +0.00%
      crypto/md5                                     691 ± 0%    695 ± 0%  +0.58%
      crypto/rand                                  5.37k ± 0%  5.43k ± 0%  +1.23%
      crypto/rc4                                     512 ± 0%    512 ± 0%  +0.00%
      crypto/rsa                                   7.05k ± 0%  7.12k ± 0%  +1.05%
      crypto/sha1                                    756 ± 0%    760 ± 0%  +0.53%
      crypto/sha256                                  523 ± 0%    523 ± 0%  +0.00%
      crypto/sha512                                  662 ± 0%    662 ± 0%  +0.00%
      crypto/subtle                                  835 ± 0%    873 ± 0%  +4.55%
      crypto/tls                                   28.1k ± 0%  28.5k ± 0%  +1.30%
      crypto/x509                                  17.7k ± 0%  17.9k ± 0%  +1.04%
      crypto/x509/pkix                             9.75k ± 0%  9.90k ± 0%  +1.50%
      encoding                                       473 ± 0%    473 ± 0%  +0.00%
      encoding/asn1                                1.41k ± 0%  1.42k ± 0%  +1.00%
      encoding/base64                              1.67k ± 0%  1.69k ± 0%  +0.90%
      encoding/binary                              2.65k ± 0%  2.76k ± 0%  +4.07%
      encoding/gob                                 13.3k ± 0%  13.5k ± 0%  +1.65%
      encoding/hex                                   854 ± 0%    857 ± 0%  +0.35%
      encoding/json                                11.9k ± 0%  12.1k ± 0%  +1.71%
      encoding/pem                                   484 ± 0%    484 ± 0%  +0.00%
      errors                                         360 ± 0%    361 ± 0%  +0.28%
      flag                                         7.32k ± 0%  7.42k ± 0%  +1.48%
      fmt                                          1.42k ± 0%  1.42k ± 0%  +0.00%
      go/ast                                       15.7k ± 0%  15.8k ± 0%  +1.07%
      go/parser                                    7.48k ± 0%  7.59k ± 0%  +1.55%
      go/scanner                                   3.88k ± 0%  3.94k ± 0%  +1.39%
      go/token                                     3.51k ± 0%  3.53k ± 0%  +0.60%
      hash                                           507 ± 0%    507 ± 0%  +0.00%
      hash/crc32                                     685 ± 0%    685 ± 0%  +0.00%
      internal/nettrace                              474 ± 0%    474 ± 0%  +0.00%
      internal/pprof/profile                       8.29k ± 0%  8.36k ± 0%  +0.89%
      internal/race                                  511 ± 0%    511 ± 0%  +0.00%
      internal/singleflight                          966 ± 0%    969 ± 0%  +0.31%
      internal/syscall/unix                          427 ± 0%    427 ± 0%  +0.00%
      io                                           3.48k ± 0%  3.52k ± 0%  +1.15%
      io/ioutil                                    5.30k ± 0%  5.38k ± 0%  +1.53%
      log                                          4.46k ± 0%  4.53k ± 0%  +1.59%
      math                                         3.72k ± 0%  3.75k ± 0%  +0.75%
      math/big                                     8.91k ± 0%  9.01k ± 0%  +1.15%
      math/rand                                    1.29k ± 0%  1.30k ± 0%  +0.46%
      mime                                         2.59k ± 0%  2.63k ± 0%  +1.55%
      mime/multipart                               3.61k ± 0%  3.68k ± 0%  +1.80%
      mime/quotedprintable                         2.20k ± 0%  2.25k ± 0%  +2.50%
      net                                          21.1k ± 0%  21.3k ± 0%  +1.10%
      net/http                                     56.6k ± 0%  57.3k ± 0%  +1.28%
      net/http/httptest                            33.6k ± 0%  34.1k ± 0%  +1.38%
      net/http/httptrace                           14.4k ± 0%  14.5k ± 0%  +1.29%
      net/http/internal                            2.70k ± 0%  2.77k ± 0%  +2.59%
      net/textproto                                4.51k ± 0%  4.60k ± 0%  +1.82%
      net/url                                      1.71k ± 0%  1.73k ± 0%  +1.41%
      os                                           11.3k ± 0%  11.4k ± 0%  +1.36%
      path                                           587 ± 0%    589 ± 0%  +0.34%
      path/filepath                                4.46k ± 0%  4.55k ± 0%  +1.88%
      reflect                                      6.39k ± 0%  6.43k ± 0%  +0.72%
      regexp                                       5.82k ± 0%  5.88k ± 0%  +1.12%
      regexp/syntax                                3.22k ± 0%  3.24k ± 0%  +0.62%
      runtime                                      12.9k ± 0%  13.2k ± 0%  +1.94%
      runtime/cgo                                    229 ± 0%    229 ± 0%  +0.00%
      runtime/debug                                3.66k ± 0%  3.72k ± 0%  +1.86%
      runtime/internal/atomic                        905 ± 0%    905 ± 0%  +0.00%
      runtime/internal/sys                         2.00k ± 0%  2.05k ± 0%  +2.55%
      runtime/pprof                                4.16k ± 0%  4.23k ± 0%  +1.66%
      runtime/pprof/internal/protopprof            11.5k ± 0%  11.7k ± 0%  +1.27%
      runtime/trace                                  354 ± 0%    354 ± 0%  +0.00%
      sort                                         1.63k ± 0%  1.68k ± 0%  +2.94%
      strconv                                      1.84k ± 0%  1.85k ± 0%  +0.54%
      strings                                      3.87k ± 0%  3.97k ± 0%  +2.48%
      sync                                         1.51k ± 0%  1.52k ± 0%  +0.33%
      sync/atomic                                  1.58k ± 0%  1.60k ± 0%  +1.27%
      syscall                                      53.2k ± 0%  53.3k ± 0%  +0.20%
      testing                                      8.14k ± 0%  8.26k ± 0%  +1.49%
      testing/internal/testdeps                      597 ± 0%    598 ± 0%  +0.17%
      text/tabwriter                               3.09k ± 0%  3.14k ± 0%  +1.85%
      text/template                                15.4k ± 0%  15.7k ± 0%  +1.89%
      text/template/parse                          8.90k ± 0%  9.12k ± 0%  +2.46%
      time                                         5.75k ± 0%  5.86k ± 0%  +1.86%
      unicode                                      4.62k ± 0%  4.62k ± 0%  +0.07%
      unicode/utf16                                  693 ± 0%    706 ± 0%  +1.88%
      unicode/utf8                                 1.05k ± 0%  1.07k ± 0%  +1.14%
      vendor/golang_org/x/crypto/chacha20poly1305  1.25k ± 0%  1.26k ± 0%  +0.64%
      vendor/golang_org/x/crypto/curve25519          392 ± 0%    392 ± 0%  +0.00%
      vendor/golang_org/x/crypto/poly1305            426 ± 0%    426 ± 0%  +0.00%
      vendor/golang_org/x/net/http2/hpack          4.19k ± 0%  4.26k ± 0%  +1.69%
      vendor/golang_org/x/net/idna                   355 ± 0%    355 ± 0%  +0.00%
      vendor/golang_org/x/net/lex/httplex            609 ± 0%    615 ± 0%  +0.99%
      vendor/golang_org/x/text/transform           1.31k ± 0%  1.31k ± 0%  +0.08%
      vendor/golang_org/x/text/unicode/norm        5.78k ± 0%  5.90k ± 0%  +2.06%
      vendor/golang_org/x/text/width               1.24k ± 0%  1.24k ± 0%  +0.16%
      [Geo mean]                                    2.49k       2.52k       +1.10%
      
      Fixes #18167.
      
      Change-Id: Ia5b7e70adc9652c7ee9954ca2efc1c59fa79be2b
      Reviewed-on: https://go-review.googlesource.com/33911
      Run-TryBot: David Lazar <lazard@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      e3efdffa
    • Kale Blankenship's avatar
      net/http/pprof: return error when requested profile duration exceeds WriteTimeout · 39366326
      Kale Blankenship authored
      Updates Profile and Trace handlers to reject requests for durations >=
      WriteTimeout.
      
      Modifies go tool pprof to print the body of the http response when
      status != 200.
      
      Fixes #18755
      
      Change-Id: I6faed21685693caf39f315f003039538114937b0
      Reviewed-on: https://go-review.googlesource.com/35564Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      39366326
    • Максим Федосеев's avatar
      crypto/tls: fix link to more info about channel bindings · 7bd968fb
      Максим Федосеев authored
      Link in the description of TLSUnique field of ConnectionState struct
      leads to an article that is no longer available, so this commit
      replaces it with link to a copy of the very same article on another
      site.
      
      Fixes #18842.
      
      Change-Id: I8f8d298c4774dc0fbbad5042db0684bb3220aee8
      Reviewed-on: https://go-review.googlesource.com/36052Reviewed-by: 's avatarFilippo Valsorda <hi@filippo.io>
      Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      7bd968fb