View Issue Details

IDProjectCategoryView StatusLast Update
0005862JEDI VCL00 JVCL Componentspublic2013-12-13 11:29
ReporterRHoekAssigned Toobones 
PrioritynormalSeveritymajorReproducibilityalways
Status resolvedResolutionduplicate 
Product VersionDaily / GIT 
Target VersionFixed in Version 
Summary0005862: TJvInspectorClassItem.GetDisplayValue return value might be invalid (JvInspector)
DescriptionThe code uses a non-initialized return value in GetDisplayValue (depending the situation).... (See ***)

function TJvInspectorTStringsItem.GetDisplayValue: string;
var
  Obj: TObject;
begin
  Obj := TObject(Data.AsOrdinal);
  if not Multiline then
  begin
    // RH - 2012-04-19: Added initialisation of Result variable!
    Result := inherited GetDisplayValue;
    if Obj <> nil then
      Result := Result*** + '(' + Obj.ClassName + ')'
    else
      Result := Result*** + '(' + GetTypeData(Data.TypeInfo).ClassType.ClassName + ')';
  end
  else
    Result := TStrings(Obj).Text;
end;

*** return value has not yet been initialized
Additional InformationNEW CODE:

function TJvInspectorTStringsItem.GetDisplayValue: string;
var
  Obj: TObject;
begin
  Obj := TObject(Data.AsOrdinal);
  if not Multiline then
  begin
    // RH - 2012-04-19: Added initialisation of Result variable!
    Result := inherited GetDisplayValue;
    if Obj <> nil then
      Result := Result + '(' + Obj.ClassName + ')'
    else
      Result := Result + '(' + GetTypeData(Data.TypeInfo).ClassType.ClassName + ')';
  end
  else
    Result := TStrings(Obj).Text;
end;
TagsNo tags attached.

Relationships

has duplicate 0005861 resolvedobones TJvInspectorClassItem.GetDisplayValue return value might be invalid (JvInspector) 

Activities

RHoek

2012-04-19 16:39

reporter   ~0019711

NOTE: this one is regarding "TJvInspectorTStringsItem.GetDisplayValue"

(not TJvInspectorClassItem.GetDisplayValue as the title suggests...)

obones

2012-06-11 17:28

administrator   ~0019855

Please provide the zipped sources of a sample application showing this.

RHoek

2012-06-12 15:36

reporter   ~0019919

I don't have a sample which 'shows' the problem, because I've never 'seen' it do something wrong.

I only know for sure, when you use an non-initialized variable (like Result) to set the same variable (or any other variable), you will get strange results at some point!

obones

2012-06-12 16:19

administrator   ~0019927

Except that this is a string variable and I believe that variable to be initialized to an empty string.

RHoek

2012-06-12 16:29

reporter   ~0019931

Hmmm, you're right - never thought of that.

But why the use the syntax 'Result := Result + Newdata;', when no initial data is available?

As far as I'm concerned there's no need to modify the code anymore, other then looking at it from a functional point of view...

Issue History

Date Modified Username Field Change
2012-04-19 16:36 RHoek New Issue
2012-04-19 16:39 RHoek Note Added: 0019711
2012-06-11 17:28 obones Note Added: 0019855
2012-06-11 17:28 obones Status new => feedback
2012-06-12 15:36 RHoek Note Added: 0019919
2012-06-12 16:19 obones Note Added: 0019927
2012-06-12 16:29 RHoek Note Added: 0019931
2013-12-13 11:28 obones Relationship added has duplicate 0005861
2013-12-13 11:29 obones Status feedback => resolved
2013-12-13 11:29 obones Resolution open => duplicate
2013-12-13 11:29 obones Assigned To => obones