From f4c2ac4825f99ec4af529d65ae98abfaf034fb0f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 2 Mar 2017 04:08:23 +0000 Subject: deduplicate strings using String#-@ (uminus) in Ruby 2.5+ This is faster than relying on eval() for older Rubies. https://bugs.ruby-lang.org/issues/13077 Ruby 2.5 is targetted for release in December 2017. --- lib/dtas/player/client_handler.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/dtas/player/client_handler.rb') diff --git a/lib/dtas/player/client_handler.rb b/lib/dtas/player/client_handler.rb index b17e90b..1e4ac96 100644 --- a/lib/dtas/player/client_handler.rb +++ b/lib/dtas/player/client_handler.rb @@ -3,6 +3,7 @@ # frozen_string_literal: true require_relative '../xs' require_relative '../parse_time' +require_relative '../../dtas' # client protocol handling for -player module DTAS::Player::ClientHandler # :nodoc: @@ -134,7 +135,7 @@ module DTAS::Player::ClientHandler # :nodoc: # or variable names. sink.valid_name?(name) or return io.emit("ERR sink name invalid") - sink.name = name.freeze + sink.name = DTAS.dedupe_str(name) active_before = sink.active before = __sink_snapshot(sink) @@ -143,7 +144,7 @@ module DTAS::Player::ClientHandler # :nodoc: k, v = kv.split('=', 2) case k when %r{\Aenv\.([^=]+)\z} - sink.env[$1] = v + sink.env[DTAS.dedupe_str($1)] = v when %r{\Aenv#([^=]+)\z} v == nil or return io.emit("ERR unset env has no value") sink.env.delete($1) -- cgit v1.2.3-24-ge0c7