memcache 1.2.9 → 1.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :build:
3
3
  :minor: 2
4
- :patch: 9
4
+ :patch: 10
5
5
  :major: 1
data/ext/native_server.c CHANGED
@@ -131,8 +131,8 @@ static VALUE mc_initialize(VALUE self, VALUE opts) {
131
131
  char* server;
132
132
  int i;
133
133
 
134
- for (i = 0; i < RARRAY(servers_aryv)->len; i++) {
135
- server = StringValuePtr(RARRAY(servers_aryv)->ptr[i]);
134
+ for (i = 0; i < RARRAY_LEN(servers_aryv); i++) {
135
+ server = StringValuePtr(RARRAY_PTR(servers_aryv)[i]);
136
136
  memcached_server_push(mc, memcached_servers_parse(server));
137
137
  }
138
138
  } else {
@@ -153,6 +153,12 @@ static VALUE mc_initialize(VALUE self, VALUE opts) {
153
153
  return self;
154
154
  }
155
155
 
156
+ #ifdef RUBY_19
157
+ #define RSTRING_SET_LEN(str, newlen) (rb_str_set_len(str, new_len))
158
+ #else
159
+ #define RSTRING_SET_LEN(str, newlen) (RSTRING(str)->len = new_len)
160
+ #endif
161
+
156
162
  static VALUE escape_key(VALUE key, bool* escaped) {
157
163
  char* str = RSTRING_PTR(key);
158
164
  uint16_t len = RSTRING_LEN(key);
@@ -170,7 +176,7 @@ static VALUE escape_key(VALUE key, bool* escaped) {
170
176
  } else {
171
177
  if (escaped) *escaped = true;
172
178
  key = rb_str_buf_new(new_len);
173
- RSTRING(key)->len = new_len;
179
+ RSTRING_SET_LEN(key, new_len);
174
180
  new_str = RSTRING_PTR(key);
175
181
 
176
182
  for (i = 0, j = 0; i < len; i++, j++) {
@@ -209,7 +215,7 @@ static VALUE unescape_key(const char* str, uint16_t len) {
209
215
  key = rb_str_new(str, len);
210
216
  } else {
211
217
  key = rb_str_buf_new(new_len);
212
- RSTRING(key)->len = new_len;
218
+ RSTRING_SET_LEN(key, new_len);
213
219
  new_str = RSTRING_PTR(key);
214
220
 
215
221
  for (i = 0, j = 0; i < len; j++, i++) {
@@ -279,8 +285,8 @@ static VALUE mc_get(int argc, VALUE *argv, VALUE self) {
279
285
 
280
286
  key_strings = (const char**) malloc(num_keys * sizeof(char *));
281
287
  key_lengths = (size_t *) malloc(num_keys * sizeof(size_t));
282
- for (i = 0; i < RARRAY(keys)->len; i++) {
283
- key = RARRAY(keys)->ptr[i];
288
+ for (i = 0; i < RARRAY_LEN(keys); i++) {
289
+ key = RARRAY_PTR(keys)[i];
284
290
  if (!use_binary(mc)) key = escape_key(key, &escaped);
285
291
 
286
292
  key_lengths[i] = RSTRING_LEN(key);
data/lib/memcache.rb CHANGED
@@ -240,9 +240,7 @@ class Memcache
240
240
 
241
241
  def add_or_get(key, value, opts = {})
242
242
  # Try to add, but if that fails, get the existing value.
243
- add(key, value, opts)
244
- rescue Memcache::Error
245
- get(key)
243
+ add(key, value, opts) || get(key)
246
244
  end
247
245
 
248
246
  def get_some(keys, opts = {})
data/memcache.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{memcache}
8
- s.version = "1.2.9"
8
+ s.version = "1.2.10"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Balthrop"]
12
- s.date = %q{2010-04-05}
12
+ s.date = %q{2010-04-12}
13
13
  s.description = %q{Ruby client for memcached supporting advanced protocol features and pluggable architecture.}
14
14
  s.email = %q{code@justinbalthrop.com}
15
15
  s.extensions = ["ext/extconf.rb"]
@@ -112,6 +112,14 @@ class MemcacheTest < Test::Unit::TestCase
112
112
  end
113
113
  end
114
114
 
115
+ def test_add_or_get
116
+ 100.times do |i|
117
+ assert_equal [i, :foo], m.add_or_get("FOO#{i}", [i, :foo])
118
+ assert_equal nil, m.add("FOO#{i}", [i, :bar])
119
+ assert_equal [i, :foo], m.add_or_get("FOO#{i}", [i, :baz])
120
+ end
121
+ end
122
+
115
123
  def test_update
116
124
  100.times do |i|
117
125
  m.set("foo#{i}", [:foo, i])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memcache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.9
4
+ version: 1.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Balthrop
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-04-05 00:00:00 -07:00
12
+ date: 2010-04-12 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15