Примеры ошибок, обнаруженных с помощью диагностики V767


V767. Suspicious access to element by a constant index inside a loop.


Skia Graphics Engine

V767 Suspicious access to element of 'fRects' array by a constant index inside a loop. grnonaafillrectop.cpp 276


SkString dumpInfo() const override {
  SkString str;
  str.appendf("# combined: %d\n", fRects.count());
  for (int i = 0; i < fRects.count(); ++i) {
    const RectInfo& geo = fRects[0];
    str.appendf("%d: Color: 0x%08x, "
                "Rect [L: %.2f, T: %.2f, R: %.2f, B: %.2f]\n", i,
                geo.fColor, geo.fRect.fLeft, geo.fRect.fTop,
                geo.fRect.fRight, geo.fRect.fBottom);
  }
  str += fHelper.dumpInfo();
  str += INHERITED::dumpInfo();
  return str;
}

The information is issued about one and the same element of the array. Most likely, fRects[i] should be written instead of fRects[0].


RT-Thread

V767 Suspicious access to element of 'w' array by a constant index inside a loop. fsl_dcp.c 946


typedef union _dcp_hash_block
{
    uint32_t w[DCP_HASH_BLOCK_SIZE / 4];
    uint8_t b[DCP_HASH_BLOCK_SIZE];
} dcp_hash_block_t;

typedef struct _dcp_hash_ctx_internal
{
  dcp_hash_block_t blk;
  ....
} dcp_hash_ctx_internal_t;

status_t DCP_HASH_Init(DCP_Type *base, dcp_handle_t *handle,
                       dcp_hash_ctx_t *ctx, dcp_hash_algo_t algo)
{
  ....
  dcp_hash_ctx_internal_t *ctxInternal;
  ....
  for (i = 0; i < sizeof(ctxInternal->blk.w) /
                            sizeof(ctxInternal->blk.w[0]); i++)
  {
     ctxInternal->blk.w[0] = 0u;
  }
  ....
}

Godot Engine

V767 Suspicious access to element of 'files' array by a constant index inside a loop. sprite_frames_editor_plugin.cpp 602


bool SpriteFramesEditor::can_drop_data_fw(....) const {
  ....
  Vector<String> files = d["files"];

  if (files.size() == 0)
    return false;

  for (int i = 0; i < files.size(); i++) {
    String file = files[0];                               // <=
    String ftype = EditorFileSystem::get_singleton()->get_file_type(file);

    if (!ClassDB::is_parent_class(ftype, "Texture")) {
      return false;
    }
  }
  ....
}

Most likely this is what should be written here: String file = files[i];


ROOT

V767 Suspicious access to element of 'current' array by a constant index inside a loop. TClingUtils.cxx 3082


llvm::StringRef ROOT::TMetaUtils::DataMemberInfo__ValidArrayIndex(....)
{
  ....
  while (current!=0) {
    // Check the token
    if (isdigit(current[0])) {
       for(i=0;i<strlen(current);i++) {
          if (!isdigit(current[0])) {
             if (errstr) *errstr = current;
             if (errnum) *errnum = NOT_INT;
             return llvm::StringRef();
          }
       }
    } else { // current token is not a digit
      ....
    }
    ....
  }
  ....
}


Найденные ошибки

Проверено проектов
367
Собрано ошибок
13 552

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;