Check width in Row_printPercentage()

The passed width should always be at least 4, otherwise printing will
always truncate and lead to an abort().

The passed should not be greater or equal to the available buffer size,
otherwise printing will always truncate and lead to an abort().

Add fallback for non debug builds.
1 file changed
tree: b1fe4373e77ce1a2fa0f5b8be49a5120b9b9bfcb
  1. .github/
  2. darwin/
  3. docs/
  4. dragonflybsd/
  5. freebsd/
  6. generic/
  7. iwyu/
  8. linux/
  9. netbsd/
  10. openbsd/
  11. pcp/
  12. scripts/
  13. solaris/
  14. unsupported/
  15. zfs/
  16. .editorconfig
  17. .gitignore
  18. .travis.yml
  19. Action.c
  20. Action.h
  21. Affinity.c
  22. Affinity.h
  23. AffinityPanel.c
  24. AffinityPanel.h
  25. AUTHORS
  26. autogen.sh
  27. AvailableColumnsPanel.c
  28. AvailableColumnsPanel.h
  29. AvailableMetersPanel.c
  30. AvailableMetersPanel.h
  31. BatteryMeter.c
  32. BatteryMeter.h
  33. CategoriesPanel.c
  34. CategoriesPanel.h
  35. ChangeLog
  36. ClockMeter.c
  37. ClockMeter.h
  38. ColorsPanel.c
  39. ColorsPanel.h
  40. ColumnsPanel.c
  41. ColumnsPanel.h
  42. CommandLine.c
  43. CommandLine.h
  44. CommandScreen.c
  45. CommandScreen.h
  46. Compat.c
  47. Compat.h
  48. configure.ac
  49. CONTRIBUTING.md
  50. COPYING
  51. CPUMeter.c
  52. CPUMeter.h
  53. CRT.c
  54. CRT.h
  55. DateMeter.c
  56. DateMeter.h
  57. DateTimeMeter.c
  58. DateTimeMeter.h
  59. DiskIOMeter.c
  60. DiskIOMeter.h
  61. DisplayOptionsPanel.c
  62. DisplayOptionsPanel.h
  63. DynamicColumn.c
  64. DynamicColumn.h
  65. DynamicMeter.c
  66. DynamicMeter.h
  67. DynamicScreen.c
  68. DynamicScreen.h
  69. EnvScreen.c
  70. EnvScreen.h
  71. FileDescriptorMeter.c
  72. FileDescriptorMeter.h
  73. FunctionBar.c
  74. FunctionBar.h
  75. Hashtable.c
  76. Hashtable.h
  77. Header.c
  78. Header.h
  79. HeaderLayout.h
  80. HeaderOptionsPanel.c
  81. HeaderOptionsPanel.h
  82. HostnameMeter.c
  83. HostnameMeter.h
  84. htop.1.in
  85. htop.c
  86. htop.desktop
  87. htop.png
  88. htop.svg
  89. IncSet.c
  90. IncSet.h
  91. InfoScreen.c
  92. InfoScreen.h
  93. ListItem.c
  94. ListItem.h
  95. LoadAverageMeter.c
  96. LoadAverageMeter.h
  97. Machine.c
  98. Machine.h
  99. Macros.h
  100. MainPanel.c
  101. MainPanel.h
  102. Makefile.am
  103. MemoryMeter.c
  104. MemoryMeter.h
  105. MemorySwapMeter.c
  106. MemorySwapMeter.h
  107. Meter.c
  108. Meter.h
  109. MetersPanel.c
  110. MetersPanel.h
  111. NetworkIOMeter.c
  112. NetworkIOMeter.h
  113. NEWS
  114. Object.c
  115. Object.h
  116. OpenFilesScreen.c
  117. OpenFilesScreen.h
  118. OptionItem.c
  119. OptionItem.h
  120. Panel.c
  121. Panel.h
  122. pcp-htop.5.in
  123. pcp-htop.c
  124. Process.c
  125. Process.h
  126. ProcessLocksScreen.c
  127. ProcessLocksScreen.h
  128. ProcessTable.c
  129. ProcessTable.h
  130. ProvideCurses.h
  131. ProvideTerm.h
  132. README
  133. RichString.c
  134. RichString.h
  135. Row.c
  136. Row.h
  137. RowField.h
  138. Scheduling.c
  139. Scheduling.h
  140. ScreenManager.c
  141. ScreenManager.h
  142. ScreensPanel.c
  143. ScreensPanel.h
  144. ScreenTabsPanel.c
  145. ScreenTabsPanel.h
  146. Settings.c
  147. Settings.h
  148. SignalsPanel.c
  149. SignalsPanel.h
  150. SwapMeter.c
  151. SwapMeter.h
  152. SysArchMeter.c
  153. SysArchMeter.h
  154. Table.c
  155. Table.h
  156. TasksMeter.c
  157. TasksMeter.h
  158. test_spec.lua
  159. TESTPLAN
  160. TraceScreen.c
  161. TraceScreen.h
  162. UptimeMeter.c
  163. UptimeMeter.h
  164. UsersTable.c
  165. UsersTable.h
  166. Vector.c
  167. Vector.h
  168. XUtils.c
  169. XUtils.h