Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: base/mime_util_xdg.cc

Issue 7134090: Avoid abs() of unsigned values. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: '' Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/mime_util.h" 5 #include "base/mime_util.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 #include <sys/time.h> 8 #include <sys/time.h>
9 #include <time.h> 9 #include <time.h>
10 10
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 subdir_iter != subdirs_.end(); 191 subdir_iter != subdirs_.end();
192 ++subdir_iter) { 192 ++subdir_iter) {
193 SubDirInfo* info = &info_array_[subdir_iter->second]; 193 SubDirInfo* info = &info_array_[subdir_iter->second];
194 if (MatchesSize(info, size) == 0) { 194 if (MatchesSize(info, size) == 0) {
195 icon_path = GetIconPathUnderSubdir(icon_name, subdir_iter->first); 195 icon_path = GetIconPathUnderSubdir(icon_name, subdir_iter->first);
196 if (!icon_path.empty()) 196 if (!icon_path.empty())
197 return icon_path; 197 return icon_path;
198 } 198 }
199 } 199 }
200 // Now looking for the mostly matched. 200 // Now looking for the mostly matched.
201 int min_delta_seen = 9999; 201 size_t min_delta_seen = 9999;
202 202
203 for (subdir_iter = subdirs_.begin(); 203 for (subdir_iter = subdirs_.begin();
204 subdir_iter != subdirs_.end(); 204 subdir_iter != subdirs_.end();
205 ++subdir_iter) { 205 ++subdir_iter) {
206 SubDirInfo* info = &info_array_[subdir_iter->second]; 206 SubDirInfo* info = &info_array_[subdir_iter->second];
207 int delta = abs(MatchesSize(info, size)); 207 size_t delta = MatchesSize(info, size);
208 if (delta < min_delta_seen) { 208 if (delta < min_delta_seen) {
209 FilePath path = GetIconPathUnderSubdir(icon_name, subdir_iter->first); 209 FilePath path = GetIconPathUnderSubdir(icon_name, subdir_iter->first);
210 if (!path.empty()) { 210 if (!path.empty()) {
211 min_delta_seen = delta; 211 min_delta_seen = delta;
212 icon_path = path; 212 icon_path = path;
213 } 213 }
214 } 214 }
215 } 215 }
216 216
217 if (!icon_path.empty() || !inherits || inherits_ == "") 217 if (!icon_path.empty() || !inherits || inherits_ == "")
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 } 318 }
319 } 319 }
320 } 320 }
321 321
322 file_util::CloseFile(fp); 322 file_util::CloseFile(fp);
323 return info_array_ != NULL; 323 return info_array_ != NULL;
324 } 324 }
325 325
326 size_t IconTheme::MatchesSize(SubDirInfo* info, size_t size) { 326 size_t IconTheme::MatchesSize(SubDirInfo* info, size_t size) {
327 if (info->type == SubDirInfo::Fixed) { 327 if (info->type == SubDirInfo::Fixed) {
328 return size - info->size; 328 if (size > info->size)
329 return size - info->size;
330 else
331 return info->size - size;
329 } else if (info->type == SubDirInfo::Scalable) { 332 } else if (info->type == SubDirInfo::Scalable) {
330 if (size >= info->min_size && size <= info->max_size) { 333 if (size < info->min_size)
331 return 0; 334 return info->min_size - size;
332 } else { 335 if (size > info->max_size)
333 return abs(size - info->min_size) < abs(size - info->max_size) ? 336 return size - info->max_size;
334 (size - info->min_size) : (size - info->max_size); 337 return 0;
335 }
336 } else { 338 } else {
337 if (size >= info->size - info->threshold && 339 if (size + info->threshold < info->size)
338 size <= info->size + info->threshold) { 340 return info->size - size - info->threshold;
339 return 0; 341 if (size > info->size + info->threshold)
340 } else { 342 return size - info->size - info->threshold;
341 return abs(size - info->size - info->threshold) < 343 return 0;
342 abs(size - info->size + info->threshold)
343 ? size - info->size - info->threshold
344 : size - info->size + info->threshold;
345 }
346 } 344 }
347 } 345 }
348 346
349 std::string IconTheme::ReadLine(FILE* fp) { 347 std::string IconTheme::ReadLine(FILE* fp) {
350 if (!fp) 348 if (!fp)
351 return ""; 349 return "";
352 350
353 std::string result = ""; 351 std::string result = "";
354 const size_t kBufferSize = 100; 352 const size_t kBufferSize = 100;
355 char buffer[kBufferSize]; 353 char buffer[kBufferSize];
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 } else { 628 } else {
631 icon_file = LookupIconInDefaultTheme(icon_names[i], size); 629 icon_file = LookupIconInDefaultTheme(icon_names[i], size);
632 if (!icon_file.empty()) 630 if (!icon_file.empty())
633 return icon_file; 631 return icon_file;
634 } 632 }
635 } 633 }
636 return FilePath(); 634 return FilePath();
637 } 635 }
638 636
639 } // namespace mime_util 637 } // namespace mime_util
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698