Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Dec 2019 07:04:02 +0000 (UTC)
From:      Tobias Kortkamp <tobik@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r520311 - head/devel/racerd/files
Message-ID:  <201912170704.xBH742n3034010@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: tobik
Date: Tue Dec 17 07:04:02 2019
New Revision: 520311
URL: https://svnweb.freebsd.org/changeset/ports/520311

Log:
  devel/racerd: Unbreak build with Rust 1.40.0 (D22843)
  
  error[E0713]: borrow may still be in use when destructor runs
     --> .../cargo-crates/url-1.5.1/src/form_urlencoded.rs:251:40
      |
  249 | impl<'a> Target for ::UrlQuery<'a> {
      |      -- lifetime `'a` defined here
  250 |     fn as_mut_string(&mut self) -> &mut String { &mut self.url.serialization }
  251 |     fn finish(self) -> &'a mut ::Url { self.url }
      |                                        ^^^^^^^^ - here, drop of `self` needs exclusive access to `*self.url`, because the type `UrlQuery<'_>` implements the `Drop` trait
      |                                        |
      |                                        returning this value requires that `*self.url` is borrowed for `'a`
  
  error: aborting due to previous error

Added:
  head/devel/racerd/files/
  head/devel/racerd/files/patch-rust-1.40.0
     - copied unchanged from r520309, head/sysutils/flowgger/files/patch-rust-1.40.0

Copied: head/devel/racerd/files/patch-rust-1.40.0 (from r520309, head/sysutils/flowgger/files/patch-rust-1.40.0)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/devel/racerd/files/patch-rust-1.40.0	Tue Dec 17 07:04:02 2019	(r520311, copy of r520309, head/sysutils/flowgger/files/patch-rust-1.40.0)
@@ -0,0 +1,55 @@
+From 2efa106431e6fb15b73478f67e37cb307bac2be6 Mon Sep 17 00:00:00 2001
+From: Simon Sapin <simon.sapin@exyr.org>
+Date: Wed, 4 Jul 2018 22:18:36 +0200
+Subject: [PATCH] Fix a lifetime bug uncovered by NLL, thanks @lqd
+
+--- cargo-crates/url-1.5.1/src/form_urlencoded.rs.orig	2017-06-25 04:39:47 UTC
++++ cargo-crates/url-1.5.1/src/form_urlencoded.rs
+@@ -247,8 +247,16 @@ impl<'a> Target for &'a mut String {
+ // * `Serializer` keeps its target in a private field
+ // * Unlike in other `Target` impls, `UrlQuery::finished` does not return `Self`.
+ impl<'a> Target for ::UrlQuery<'a> {
+-    fn as_mut_string(&mut self) -> &mut String { &mut self.url.serialization }
+-    fn finish(self) -> &'a mut ::Url { self.url }
++    fn as_mut_string(&mut self) -> &mut String {
++        &mut self.url.as_mut().unwrap().serialization
++    }
++
++    fn finish(mut self) -> &'a mut ::Url {
++        let url = self.url.take().unwrap();
++        url.restore_already_parsed_fragment(self.fragment.take());
++        url
++    }
++
+     type Finished = &'a mut ::Url;
+ }
+ 
+--- cargo-crates/url-1.5.1/src/lib.rs.orig	2017-06-25 04:39:47 UTC
++++ cargo-crates/url-1.5.1/src/lib.rs
+@@ -1283,7 +1283,7 @@ impl Url {
+             self.serialization.push('?');
+         }
+ 
+-        let query = UrlQuery { url: self, fragment: fragment };
++        let query = UrlQuery { url: Some(self), fragment: fragment };
+         form_urlencoded::Serializer::for_suffix(query, query_start + "?".len())
+     }
+ 
+@@ -2347,13 +2347,15 @@ fn io_error<T>(reason: &str) -> io::Result<T> {
+ /// Implementation detail of `Url::query_pairs_mut`. Typically not used directly.
+ #[derive(Debug)]
+ pub struct UrlQuery<'a> {
+-    url: &'a mut Url,
++    url: Option<&'a mut Url>,
+     fragment: Option<String>,
+ }
+ 
+ impl<'a> Drop for UrlQuery<'a> {
+     fn drop(&mut self) {
+-        self.url.restore_already_parsed_fragment(self.fragment.take())
++        if let Some(url) = self.url.take() {
++            url.restore_already_parsed_fragment(self.fragment.take())
++        }
+     }
+ }
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912170704.xBH742n3034010>