History log of /4.6.0/platform/ (Results 1 - 25 of 202)
Revision (<<< Hide revision tags) (Show revision tags >>>)Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
Revision tags: v6.0.3, v5.5.4, v5.5.0, v4.6.5, v5.0.0, v4.6.0
a80097d516-Nov-2016 Dave Rigby <daver@couchbase.com>

MB-21650: Add CachelinePadded template class

Add a templated class which pads the templated type such that it will
not suffer from false sharing (i.e. no adjacent members will reside in

MB-21650: Add CachelinePadded template class

Add a templated class which pads the templated type such that it will
not suffer from false sharing (i.e. no adjacent members will reside in
the same cacheline).

Inspired by the folly class of the same name
(https://github.com/facebook/folly/blob/master/folly/CachelinePadded.h)
- this class is simpler and doesn't rely on any other folly code.

Usage:

Simply define as a wrapper around the class in question. The
underlying value can be accessed using either the '*' or '->'
operators:

cb::CachelinePadded<int> x;
*x = 1;
...
cb::CachelinePadded<std::atomic<int>> y;
y->fetch_add(2);

Change-Id: I8316637a7a0c6fd05fd6f6ba24a1df44c43390c5
Reviewed-on: http://review.couchbase.org/69949
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: buildbot <build@couchbase.com>

show more ...

c66bf85e14-Nov-2016 Daniel Owen <owend@couchbase.com>

MB-20079: Provide ability to use std::chrono::steady_clock

Currently we only have the ability to use gethrtime(void) which uses
clock_gettime(CLOCK_REALTIME_FAST ...)

This retur

MB-20079: Provide ability to use std::chrono::steady_clock

Currently we only have the ability to use gethrtime(void) which uses
clock_gettime(CLOCK_REALTIME_FAST ...)

This returns the current view of wall-clock time and therefore can
jump forwards and backwards as the system wall clock is changed.

The steady_clock is not related to wall clock time and cannot be
decreased. This is useful when we want a task to run at a set
interval regardless if the system wall clock is changed.

Unfortunately there is an issue with the accuracy of steady_clock on
Windows when built with VS 2013 or earlier. Therefore an abstraction
of ProcessClock is provided, which on non-Windows or when compiling
with 2015+ maps directly onto std::chrono::steady_clock. However if
compiling on Windows using VS 2013 or below ProcessClock maps to our
own implementation of steady_clock.

Change-Id: I2fc9688abb782fe2c9e80efb6da840be3643d4a5
Reviewed-on: http://review.couchbase.org/69844
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

Revision tags: v4.6.0-DP
a6d0029227-Oct-2016 Trond Norbye <trond.norbye@gmail.com>

Don't use a reference to hold the mode

It could go out of scope

Change-Id: I850864a7a1b43d898745d17e7932df7a22d6fe28
Reviewed-on: http://review.couchbase.org/69268
Tested-by

Don't use a reference to hold the mode

It could go out of scope

Change-Id: I850864a7a1b43d898745d17e7932df7a22d6fe28
Reviewed-on: http://review.couchbase.org/69268
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

321763bc27-Oct-2016 Trond Norbye <trond.norbye@gmail.com>

Refactor: Remove private mapping and use enum for mode

Change-Id: I26fffd50bf6f9b4cfb19f8b940b1746aa04fc2ea
Reviewed-on: http://review.couchbase.org/69264
Tested-by: buildbot <build@

Refactor: Remove private mapping and use enum for mode

Change-Id: I26fffd50bf6f9b4cfb19f8b940b1746aa04fc2ea
Reviewed-on: http://review.couchbase.org/69264
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

0812efd426-Oct-2016 Trond Norbye <trond.norbye@gmail.com>

Don't throw std::string in memorymap

Throw something based off std::exception so that it is more
intuitive for the caller to pick it up.

Changed the namespace from Couchbase to

Don't throw std::string in memorymap

Throw something based off std::exception so that it is more
intuitive for the caller to pick it up.

Changed the namespace from Couchbase to cb

Change-Id: I4c59c5cbdf7ef39f04a8f12a0c0f789642318eab
Reviewed-on: http://review.couchbase.org/69242
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Jim Walker <jim@couchbase.com>

show more ...

6bb6838c20-Oct-2016 Trond Norbye <trond.norbye@gmail.com>

MB-21436: Add a guard to cb_join_thread from waiting for itself

We've seen problems where we've had global std::unique_ptr's which
had to run destructors which waited for threads be run

MB-21436: Add a guard to cb_join_thread from waiting for itself

We've seen problems where we've had global std::unique_ptr's which
had to run destructors which waited for threads be run on a "random"
thread causing a deadlock (the actual use was in memcached with the
parent monitor thread). The C++ runtime just picked a random thread
to run these destructors, and sometimes the parent monitor thread
would run them. We've refactored the code in memcached so that object
is no longer global, but to avoid facing the problem at a later time
we should add a guard here. (and it doesn't make any sense from
a logical perspective to wait for the current thread to be done ;-)

Change-Id: Ieef1ce83f53fabd5a77c0df1499641b094e23eb4
Reviewed-on: http://review.couchbase.org/69034
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

Revision tags: v4.5.1-MP1, v4.5.1
e2a7b63601-Aug-2016 Dave Rigby <daver@couchbase.com>

Add Valgrind header file

Add Valgrind's `valgrind.h` header file. This allows applications to
interact with Valgrind when run under them. In our case it allows us
to detect when run

Add Valgrind header file

Add Valgrind's `valgrind.h` header file. This allows applications to
interact with Valgrind when run under them. In our case it allows us
to detect when run under Valgrind, for example to run fewer iterations
of a benchmark.

Header file from Valgrind v3.10.1
(http://valgrind.org/downloads/valgrind-3.11.0.tar.bz2).

(cherry picked from commit 025d171ba04a93d071b7dc85733bfb8457297ad2)

Change-Id: Idda46dff5963c29db6890b0c8841c80b1401c010
Reviewed-on: http://review.couchbase.org/68570
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: buildbot <build@couchbase.com>

show more ...

3de7855b04-Oct-2016 Trond Norbye <trond.norbye@gmail.com>

Remove unused support for tcmalloc

Change-Id: I5d62332736d0264b6368d49eee791f8fbe77bf42
Reviewed-on: http://review.couchbase.org/68319
Tested-by: buildbot <build@couchbase.com>
R

Remove unused support for tcmalloc

Change-Id: I5d62332736d0264b6368d49eee791f8fbe77bf42
Reviewed-on: http://review.couchbase.org/68319
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

f85e284304-Oct-2016 Trond Norbye <trond.norbye@gmail.com>

Don't use #pragma GCC on win32

Change-Id: I8996e2915a232ac2ae6057a553c6f4b66377b8d3
Reviewed-on: http://review.couchbase.org/68310
Tested-by: buildbot <build@couchbase.com>
Revie

Don't use #pragma GCC on win32

Change-Id: I8996e2915a232ac2ae6057a553c6f4b66377b8d3
Reviewed-on: http://review.couchbase.org/68310
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

ab7b9c1128-Sep-2016 Dave Rigby <daver@couchbase.com>

MB-20769: Remove WEAK symbol attributes from operator new/delete

These were only added temporarily to aid in migration to the new
cbmalloc API, and can now be removed.

Change-Id

MB-20769: Remove WEAK symbol attributes from operator new/delete

These were only added temporarily to aid in migration to the new
cbmalloc API, and can now be removed.

Change-Id: Ie9426fc3f0cdaf7c8414f40e1890dbcb27bb61cf
Reviewed-on: http://review.couchbase.org/68102
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Daniel Owen <owend@couchbase.com>

show more ...

b20faafb08-Sep-2016 Dave Rigby <daver@couchbase.com>

MB-20834: Add Couchbase::get_available_cpu_count

Add a new helper function to platform to return the number of logical
threads (CPUs) this process has access to - i.e. the maximum number

MB-20834: Add Couchbase::get_available_cpu_count

Add a new helper function to platform to return the number of logical
threads (CPUs) this process has access to - i.e. the maximum number of
concurrent threads of execution available.

This is essentially the code from memcached's
get_number_of_worker_threads(), enhanced to use sched_getaffinity() if
available. This is particularly important on Docker which uses cgroups
to control the number of CPUs the container has access to, and by not
using that, we create "too many" worker threads.

Change-Id: I3e3b91eecc51aea298ae9aceb9e8c6d3f16b7612
Reviewed-on: http://review.couchbase.org/67490
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Manu Dhundi <manu@couchbase.com>

show more ...

d74f197030-Aug-2016 Dave Rigby <daver@couchbase.com>

MB-20770: Switch memory tracking from {TC,je}malloc -> cbmalloc

(Re-apply after previous revert, due to being merged before other
dependant patches in projects' were merged).

O

MB-20770: Switch memory tracking from {TC,je}malloc -> cbmalloc

(Re-apply after previous revert, due to being merged before other
dependant patches in projects' were merged).

Only change necessary is on OS X, where we have cbmalloc and friends
call je_malloc directly (when it is selected) instead of calling
malloc().

This means that cbmalloc no longer goes from:

* cbmalloc -> call cbmalloc_hooks, call malloc()
-> darwin_zone.cc:malloc (ep_engine) -> call hooks, call je_malloc

and instead does:

* cbmalloc -> call cbmalloc_hooks, call je_malloc.

Change-Id: I7bfd2c27886eb9b4ec84eec06f7e3258db0b781a
Reviewed-on: http://review.couchbase.org/67540
Well-Formed: buildbot <build@couchbase.com>
Reviewed-by: Daniel Owen <owend@couchbase.com>
Tested-by: buildbot <build@couchbase.com>

show more ...

cdd8270b31-Aug-2016 Dave Rigby <daver@couchbase.com>

MB-20769: Use cbmalloc for C++ new/delete allocations

(Re-apply after previous revert, due to being merged before other
dependant patches in projects' were merged).

Add a new s

MB-20769: Use cbmalloc for C++ new/delete allocations

(Re-apply after previous revert, due to being merged before other
dependant patches in projects' were merged).

Add a new source file (global_new_replacement.cc) which is included
into platform and will use cb_malloc/cb_free for all C++-style memory
allocations (those via new/delete).

Given that all binaries which link platform will be using cbmalloc for
any allocations made /by/ platform, we need to ensure that mismatches
between memory allocators (i.e. allocating with cb_malloc() but
freeing using free() do not occur.

This is particulary problematic on Windows, as there each binary (exe,
dll, etc) can have its *own* version of `operator new`. Therefore a
program which doesn't itself link global_new_replacment.cc and calls
`new` will get memory from libc malloc, but if it calls a platform
function which allocates memory (e.g. a one returning std::string)
that will be allocated via cb_malloc(). This quickly becomes a problem
(typically resulting in a crash) when the program tries to delete the
string (or even resize it) - as the program will try to use libc and
crash.

To solve this problem we re-define the `platform` library. Instead of
it being a shared library, we define it as a _static_ library
consisting of:

* one source file - global_new_replacement.cc
* one target_link_library - the 'original' platforn shared library,
now renamed to platform_so.

The effect of this is that all targets which previously linked
platform will additionally (statically) link
global_new_replacement.cc, ensuring they will use cbmalloc for any C++
memory allocations.

Note: both operator new & delete are marked as weak symbols to
simplify migrating existing code. For example ep-engine has test
code which defines its own operator new/delete, and if we don't
define these symbols as weak we'll get a linker error when this
patch is merged.

Once the other components have been updated to no longer link
operator new/delete twice, this attribute can be removed.

Change-Id: I0954c23994b19002d75db5cc2f987722edfc2c7c
Reviewed-on: http://review.couchbase.org/67539
Well-Formed: buildbot <build@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Daniel Owen <owend@couchbase.com>
Reviewed-by: Jim Walker <jim@couchbase.com>

show more ...

9ca8749409-Sep-2016 Dave Rigby <daver@couchbase.com>

MB-20586: [cbmalloc] With jemalloc, use system symbols for now

TEMP: jemalloc has no new/delete hooks itself, and we instead rely on
either our own custom zone (OS X; darwin_zone.c) or o

MB-20586: [cbmalloc] With jemalloc, use system symbols for now

TEMP: jemalloc has no new/delete hooks itself, and we instead rely on
either our own custom zone (OS X; darwin_zone.c) or our own
malloc/free symbols (alloc_hooks_jemalloc.cc) to intercept
malloc/realloc etc and call the memory hook (before chaining to the
real allocator).

This means that during the transition to cbmalloc, we still need to
call the 'normal' malloc function to ensure that the current
allocator-specific memory tracking hooks (memcached
MallocHooks::add_new_hook) are invoked.

When we subsequently flip MallocHooks::add_new_hook to instead call
cbmalloc's memory tracking cb_add_new_hook), we will change the
MALLOC_PREFIX to 'je_' and remove our own custom zone & own
malloc/free symbols.

This patch essentially lets us change the rest of KV-engine to call
cb_malloc/cb_free (instead of 'malloc/free') and have no effect on the
actual way memory tracking is done *until* we flip the MALLOC_PREFIX
to 'je_' in a subsequent patch.

Change-Id: I0ca29cf3b14bf326f413472e5330b4ac1fe9af19
Reviewed-on: http://review.couchbase.org/67543
Well-Formed: buildbot <build@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Daniel Owen <owend@couchbase.com>

show more ...

8a667e5208-Sep-2016 Dave Rigby <daver@couchbase.com>

Revert "MB-20769: Use cbmalloc for C++ new/delete allocations"

This patch needs further changes to be committed to memcached before
merging (memory tracking is currently broken with this

Revert "MB-20769: Use cbmalloc for C++ new/delete allocations"

This patch needs further changes to be committed to memcached before
merging (memory tracking is currently broken with this in). Backing
out until those are ready.

This reverts commit dd5bc49594cb3fcdd587e3a8b4140059e617267b.

Change-Id: I178337a86f7eccc4e07796098fbd875e970631b3
Reviewed-on: http://review.couchbase.org/67522
Well-Formed: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Dave Rigby <daver@couchbase.com>

show more ...

d849ccac08-Sep-2016 Dave Rigby <daver@couchbase.com>

Revert "MB-20770: Switch memory tracking from {TC,je}malloc -> cbmalloc"

This patch needs further changes to be committed to memcached before
merging (memory tracking is currently broken

Revert "MB-20770: Switch memory tracking from {TC,je}malloc -> cbmalloc"

This patch needs further changes to be committed to memcached before
merging (memory tracking is currently broken with this in). Backing
out until those are ready.

This reverts commit f9c4772b89b4d3ff809b0e1d70809315924cbed2.

Change-Id: I31efb9bb626c7ee6ab06caeab17df23b8c1b636a
Reviewed-on: http://review.couchbase.org/67521
Well-Formed: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>
Tested-by: Dave Rigby <daver@couchbase.com>

show more ...

f9c4772b30-Aug-2016 Dave Rigby <daver@couchbase.com>

MB-20770: Switch memory tracking from {TC,je}malloc -> cbmalloc

Only change necessary is on OS X, where we have cbmalloc and friends call
je_malloc directly (when it is selected) instead

MB-20770: Switch memory tracking from {TC,je}malloc -> cbmalloc

Only change necessary is on OS X, where we have cbmalloc and friends call
je_malloc directly (when it is selected) instead of calling malloc().

This means that cbmalloc no longer goes from:

* cbmalloc -> call cbmalloc_hooks, call malloc()
-> darwin_zone.cc:malloc (ep_engine) -> call hooks, call je_malloc

and instead does:

* cbmalloc -> call cbmalloc_hooks, call je_malloc.

Change-Id: Ib602c4165e4c526fad03dc5445a5bc267670f909
Reviewed-on: http://review.couchbase.org/67302
Well-Formed: buildbot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>
Tested-by: buildbot <build@couchbase.com>

show more ...

dd5bc49531-Aug-2016 Dave Rigby <daver@couchbase.com>

MB-20769: Use cbmalloc for C++ new/delete allocations

Add a new source file (global_new_replacement.cc) which
is included into platform and will use cb_malloc/cb_free for all C++-style

MB-20769: Use cbmalloc for C++ new/delete allocations

Add a new source file (global_new_replacement.cc) which
is included into platform and will use cb_malloc/cb_free for all C++-style
memory allocations (those via new/delete).

Given that all binaries which link platform will be using cbmalloc for any
allocations made /by/ platform, we need to ensure that mismatches between
memory allocators (i.e. allocating with cb_malloc() but freeing using
free() do not occur.

This is particulary problematic on Windows, as there each binary (exe,
dll, etc) can have its *own* version of `operator new`. Therefore a
program which doesn't itself link global_new_replacment.cc and calls `new`
will get memory from libc malloc, but if it calls a platform function
which allocates memory (e.g. a one returning std::string) that will be
allocated via cb_malloc(). This quickly becomes a problem (typically
resulting in a crash) when the program tries to delete the string (or even
resize it) - as the program will try to use libc and crash.

To solve this problem we re-define the `platform` library. Instead of it
being a shared library, we define it as a _static_ library consisting of:

* one source file - global_new_replacement.cc
* one target_link_library - the 'original' platforn shared library, now
renamed to platform_so.

The effect of this is that all targets which previously linked platform
will additionally (statically) link global_new_replacement.cc, ensuring
they will use cbmalloc for any C++ memory allocations.

Note: both operator new & delete are marked as weak symbols to simplify
migrating existing code. For example ep-engine has test code which
defines its own operator new/delete, and if we don't define these
symbols as weak we'll get a linker error when this patch is merged.

Once the other components have been updated to no longer link
operator new/delete twice, this attribute can be removed.

Change-Id: I03d088810d8709a053e9d57bd30ebfafea51da38
Reviewed-on: http://review.couchbase.org/67301
Well-Formed: buildbot <build@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

6d5dc98118-Aug-2016 Dave Rigby <daver@couchbase.com>

MB-20769: Use cbmalloc for the rest of platform

Update platform library to use cbmalloc instead of libc malloc for all
memory allocation.

Change-Id: I740161c705c72355c66512b4226

MB-20769: Use cbmalloc for the rest of platform

Update platform library to use cbmalloc instead of libc malloc for all
memory allocation.

Change-Id: I740161c705c72355c66512b42267d5ff5836bc67
Reviewed-on: http://review.couchbase.org/67067
Well-Formed: buildbot <build@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

08792fd518-Aug-2016 Dave Rigby <daver@couchbase.com>

MB-20769: Use cbmalloc for cJSON

cJSON performs memory allocation internally, and also allocates memory
which is returned (either directly or indirectly) to clients. For both
cases i

MB-20769: Use cbmalloc for cJSON

cJSON performs memory allocation internally, and also allocates memory
which is returned (either directly or indirectly) to clients. For both
cases it uses a set of malloc functions to perform allocation, which
default to the standard system malloc/free etc.

This patch changes the default malloc functions to be cbmalloc (the
user can still use the hook API to overide to something different). It
also fixes a couple of instances where the system functions were
incorrectly hard-coded.

Change-Id: Ibc81ee0342fdd864f653f3a816463c9c16811242
Reviewed-on: http://review.couchbase.org/67318
Well-Formed: buildbot <build@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

4835251c18-Aug-2016 Dave Rigby <daver@couchbase.com>

MB-20586: Add cb_malloc memory allocation API

Add a set of our own memory allocation functions:

* cb_malloc
* cb_calloc
* cb_realloc
* cb_free

These function in

MB-20586: Add cb_malloc memory allocation API

Add a set of our own memory allocation functions:

* cb_malloc
* cb_calloc
* cb_realloc
* cb_free

These function in the same way as their standard library namesakes,
with the addition of:

1. Allows applications to register callbacks to be called on any
memory allocation / deletion (so memcached/ep-engine can track
allocations).

2. Allow us to use an alternative memory allocator instead of the
system (TCMalloc, jemalloc etc).

Also add equivalents for libc functions which allocate memory
internally. Instead we allocate via cb_malloc:

* cb_strdup

Change-Id: I45e15b2b2e3a939344322164354acbae4aba2d72
Reviewed-on: http://review.couchbase.org/67065
Well-Formed: buildbot <build@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Jim Walker <jim@couchbase.com>

show more ...

349e6e8a22-Aug-2016 Trond Norbye <trond.norbye@gmail.com>

MB-20625: Backport isFile method

Change-Id: I1bcde0d41fa089bfc8381d36a33ee60e26a4c5f6
Reviewed-on: http://review.couchbase.org/66952
Tested-by: buildbot <build@couchbase.com>
Wel

MB-20625: Backport isFile method

Change-Id: I1bcde0d41fa089bfc8381d36a33ee60e26a4c5f6
Reviewed-on: http://review.couchbase.org/66952
Tested-by: buildbot <build@couchbase.com>
Well-Formed: buildbot <build@couchbase.com>
Reviewed-by: Will Gardner <will.gardner@couchbase.com>

show more ...

9ed45ce121-Jun-2016 Trond Norbye <trond.norbye@gmail.com>

MB-19390: Use #ifdef wrapper for strings.h

Our implementation of strings.h for win32 defines types
differently than forestdb, and that didn't use to be
a problems since forestdb don'

MB-19390: Use #ifdef wrapper for strings.h

Our implementation of strings.h for win32 defines types
differently than forestdb, and that didn't use to be
a problems since forestdb don't include strings.h. BUT now
that we're trying to use jemalloc on windows _IT_ tries to
include strings.h, which would cause a conflict with the
values defined by forestdb.

By using #ifndef STRINGS_H forestdb may skip the inclusion
of strings.h (it isn't needed anyway) and we don't have
to change any of the values we've already tested both
ForestDB and Couchbase server with.

Change-Id: I39df6ec9597f45d5a69533e0d2ccb28ef57183da
Reviewed-on: http://review.couchbase.org/65086
Well-Formed: buildbot <build@couchbase.com>
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>
Reviewed-by: Will Gardner <will.gardner@couchbase.com>

show more ...

b574994c24-May-2016 Dave Rigby <daver@couchbase.com>

MB-19605: Fix compile warning in checked_snprintf

checked_snprintf.cc:47:20: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]

} e

MB-19605: Fix compile warning in checked_snprintf

checked_snprintf.cc:47:20: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]

} else if (ret >= size) {
^

Change-Id: I2286e507322ca2509bbac639031737cf6519b851
Reviewed-on: http://review.couchbase.org/64334
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Trond Norbye <trond.norbye@gmail.com>

show more ...

Revision tags: v4.5.0
ae2a7a2413-May-2016 Trond Norbye <trond.norbye@gmail.com>

MB-19605: Create checked_snprintf for C++ calls to snprintf

Change-Id: I05a701a637fd87262b104a58d589f32b4819b663
Reviewed-on: http://review.couchbase.org/64026
Tested-by: buildbot <b

MB-19605: Create checked_snprintf for C++ calls to snprintf

Change-Id: I05a701a637fd87262b104a58d589f32b4819b663
Reviewed-on: http://review.couchbase.org/64026
Tested-by: buildbot <build@couchbase.com>
Reviewed-by: Dave Rigby <daver@couchbase.com>

show more ...

123456789