Fix markdown lint errors

11979:3          warning  Incorrect indentation before bullet: remove 1 space  list-item-bullet-indent
19412:1-19462:23   warning  Missing blank line before block node                 no-missing-blank-lines
This commit is contained in:
Jacob Langley 2017-02-13 13:11:10 -08:00 committed by Thibault Kruse
parent 04fd2a5807
commit 48b40df328

View File

@ -12000,12 +12000,12 @@ Unfortunately people's needs and constraints differ so dramatically that we cann
but we can mention: but we can mention:
* Static enforcement tools: both [clang](http://clang.llvm.org/docs/ThreadSafetyAnalysis.html) * Static enforcement tools: both [clang](http://clang.llvm.org/docs/ThreadSafetyAnalysis.html)
and some older versions of [GCC](https://gcc.gnu.org/wiki/ThreadSafetyAnnotation) and some older versions of [GCC](https://gcc.gnu.org/wiki/ThreadSafetyAnnotation)
have some support for static annotation of thread safety properties. have some support for static annotation of thread safety properties.
Consistent use of this technique turns many classes of thread-safety errors into compile-time errors. Consistent use of this technique turns many classes of thread-safety errors into compile-time errors.
The annotations are generally local (marking a particular member variable as guarded by a particular mutex), The annotations are generally local (marking a particular member variable as guarded by a particular mutex),
and are usually easy to learn. However, as with many static tools, it can often present false negatives; and are usually easy to learn. However, as with many static tools, it can often present false negatives;
cases that should have been caught but were allowed. cases that should have been caught but were allowed.
* dynamic enforcement tools: Clang's [Thread Sanitizer](http://clang.llvm.org/docs/ThreadSanitizer.html) (aka TSAN) * dynamic enforcement tools: Clang's [Thread Sanitizer](http://clang.llvm.org/docs/ThreadSanitizer.html) (aka TSAN)
is a powerful example of dynamic tools: it changes the build and execution of your program to add bookkeeping on memory access, is a powerful example of dynamic tools: it changes the build and execution of your program to add bookkeeping on memory access,