Avoid 'conversion may change value' cases related to iso files
Avoid some 'conversion from long long int
to int
may change value' and 'conversion from [...] long int
to int
may change value' warnings in iso.cpp, kisofile.cpp and kisodirectory.cpp. Those conversions to int
are confirmed because some non-Krusader functions that are used (like resize(int)
or fromTime_t(uint)
) do not accept data types that are bigger than int
.
Avoid several 'conversion from [...] long int
[...] to int
' warnings in some files by means of using a ssize_t
, time_t
or qint64
variables instead of an int
one.
Avoid a 'conversion from int
to short unsigned int
may change value' warning in bswap.h by means of using an (unsigned short)
instead of a static_cast<unsigned short>
because, when trying to use a static_cast<unsigned short>
, the error 'static_cast
undeclared (first use in this function)' was seen, as it happens when trying to use static_cast
with C (not C++) source code.
Avoid a 'conversion from int
to short unsigned int
may change value' warning in kiso.cpp, confirming a conversion to __u8
because a non-Krusader structure does not accept data types that are bigger than short unsigned int
.
The warnings are:
/home/user/krusader/iso/kisofile.cpp:38:43: warning: conversion from ‘qint64’ {aka ‘long long int’} to ‘int’ may change value [-Wconversion]
38 | r.resize(((pos + count) < size()) ? count : size() - pos);
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/home/user/krusader/iso/kisofile.cpp:40:45: warning: conversion from ‘qint64’ {aka ‘long long int’} to ‘int’ may change value [-Wconversion]
40 | rlen = archive()->device()->read(r.data(), r.size());
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/home/user/krusader/iso/libisofs/bswap.h:64:42: warning: conversion from ‘int’ to ‘short unsigned int’ may change value [-Wconversion]
64 | #define bswap_16(x) (((x) & 0x00ff) << 8 | ((x) & 0xff00) >> 8)
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/home/user/krusader/iso/libisofs/bswap.h:97:21: note: in expansion of macro ‘bswap_16’
97 | #define be2me_16(x) bswap_16(x)
| ^~~~~~~~
/home/user/krusader/iso/libisofs/iso_fs.h:214:12: note: in expansion of macro ‘be2me_16’
214 | return be2me_16(*(unsigned short *)p);
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:69:39: warning: conversion from ‘int’ to ‘__u8’ {aka ‘unsigned char’} may change value [-Wconversion]
69 | tocentry.cdte_track = i;
| ^
/home/user/krusader/iso/kiso.cpp:248:23: warning: conversion from ‘time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
248 | time = rr.t_mtime;
| ~~~^~~~~~~
/home/user/krusader/iso/kiso.cpp:249:24: warning: conversion from ‘time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
249 | adate = rr.t_atime;
| ~~~^~~~~~~
/home/user/krusader/iso/kiso.cpp:250:24: warning: conversion from ‘time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
250 | cdate = rr.t_ctime;
| ~~~^~~~~~~
/home/user/krusader/iso/kiso.cpp:258:47: warning: conversion from ‘time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
258 | adate = cdate = time = isodate_915(idr->date, 0);
| ~~~~~~~~~~~^~~~~~~~~~~~~~
/home/user/krusader/iso/kiso.cpp:392:34: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
392 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:392:48: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
392 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:392:62: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
392 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:406:42: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
406 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:406:56: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
406 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:406:70: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
406 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:426:52: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
426 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:426:66: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
426 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:426:80: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
426 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:446:48: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
446 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:446:62: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
446 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/kiso.cpp:446:76: warning: conversion from ‘__time_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
446 | buf.st_mtime, buf.st_atime, buf.st_ctime, uid, gid, QString());
| ^~~~~~~~
/home/user/krusader/iso/libisofs/bswap.h:64:42: warning: conversion from ‘int’ to ‘short unsigned int’ may change value [-Wconversion]
64 | #define bswap_16(x) (((x) & 0x00ff) << 8 | ((x) & 0xff00) >> 8)
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/home/user/krusader/iso/libisofs/bswap.h:97:21: note: in expansion of macro ‘bswap_16’
97 | #define be2me_16(x) bswap_16(x)
| ^~~~~~~~
/home/user/krusader/iso/libisofs/iso_fs.h:214:12: note: in expansion of macro ‘be2me_16’
214 | return be2me_16(*(unsigned short *)p);
| ^~~~~~~~
/home/user/krusader/iso/iso.cpp:136:41: warning: conversion from ‘ssize_t’ {aka ‘long int’} to ‘int’ may change value [-Wconversion]
136 | int endOfName = readlink(QFile::encodeName(tryPath), symDest, 256);
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/user/krusader/iso/iso.cpp:375:73: warning: conversion from ‘size_t’ {aka ‘long unsigned int’} to ‘int’ may change value [-Wconversion]
375 | pointer_block = isoFileEntry->dataAt(hdr->header_size << 2, ptrblock_bytes);
| ^~~~~~~~~~~~~~
/home/user/krusader/iso/iso.cpp:377:30: warning: conversion from ‘long unsigned int’ to ‘int’ may change value [-Wconversion]
377 | inbuf.resize(block_size2);
| ^~~~~~~~~~~
/home/user/krusader/iso/iso.cpp:379:35: warning: conversion from ‘long unsigned int’ to ‘int’ may change value [-Wconversion]
379 | outbuf.resize(block_size);
| ^~~~~~~~~~
/home/user/krusader/iso/iso.cpp:416:54: warning: conversion from ‘long unsigned int’ to ‘int’ may change value [-Wconversion]
416 | inbuf = isoFileEntry->dataAt(cstart, csize);
| ^~~~~
/home/user/krusader/iso/iso.cpp:436:29: warning: conversion from ‘uLong’ {aka ‘long unsigned int’} to ‘int’ may change value [-Wconversion]
436 | fileData.resize(bytes);
| ^~~~~
TEST PLAN
Krusader should work correctly after applying the proposed changes. If anyone wants to perform some tests: open several iso files, enter its folders, use F3 to see the content of some files, check that the data of files and folders are the correct ones, and that other information is seen correctly.