diff options
Diffstat (limited to 'network/transgui/dup-obj-status.patch')
-rw-r--r-- | network/transgui/dup-obj-status.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/network/transgui/dup-obj-status.patch b/network/transgui/dup-obj-status.patch new file mode 100644 index 0000000000..04967efd01 --- /dev/null +++ b/network/transgui/dup-obj-status.patch @@ -0,0 +1,49 @@ +From 8d63a310cbdc99ff8d565e2429c0740a8be5c3cb Mon Sep 17 00:00:00 2001 +From: Kuzz <Kuzz@ThinkPad.localdomain> +Date: Wed, 29 Jul 2020 21:24:21 +0300 +Subject: [PATCH] Deduplicate RequestInfo params. #1325 + +--- + rpc.pas | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +diff --git a/rpc.pas b/rpc.pas +index 2cbfeee0..7f9254c8 100644 +--- a/rpc.pas ++++ b/rpc.pas +@@ -816,21 +816,32 @@ function TRpc.RequestInfo(TorrentId: integer; const Fields: array of const; cons + req, args: TJSONObject; + _fields: TJSONArray; + i: integer; ++ sl: TStringList; + begin + Result:=nil; + req:=TJSONObject.Create; ++ sl:=TStringList.Create; + try + req.Add('method', 'torrent-get'); + args:=TJSONObject.Create; + if TorrentId <> 0 then + args.Add('ids', TJSONArray.Create([TorrentId])); +- _fields:=TJSONArray.Create(Fields); +- for i:=Low(ExtraFields) to High(ExtraFields) do +- _fields.Add(ExtraFields[i]); ++ _fields:=TJSONArray.Create; ++ for i:=Low(Fields) to High(Fields) do ++ if (Fields[i].VType=vtAnsiString) then ++ sl.Add(String(Fields[i].VAnsiString)); ++ sl.AddStrings(ExtraFields); ++ sl.Sort; ++ for i:=sl.Count-2 downto 0 do ++ if (sl[i]=sl[i+1]) then ++ sl.Delete(i+1); ++ for i:=0 to sl.Count-1 do ++ _fields.Add(sl[i]); + args.Add('fields', _fields); + req.Add('arguments', args); + Result:=SendRequest(req); + finally ++ sl.Free; + req.Free; + end; + end; |